GNU/Linux >> Linux Esercitazione >  >> Linux

Linux:in che modo Node.js / Il modulo cluster passa le nuove connessioni dal processo principale / principale ai processi secondari?

Come funziona esattamente sotto il cofano / a livello di sistema operativo (principalmente nelle implementazioni Unix / dal punto di vista dell'API socket)?

La documentazione del modulo cluster dice:

"il processo principale ascolta su una porta, accetta nuove connessioni e le distribuisce tra i lavoratori in modo round robin"

Questo significa che il processo master da solo gestisce / chiama accept() sulle connessioni in entrata, quindi passa il descrittore di socket restituito a un processo figlio pre-fork tramite un meccanismo IPC ( socket di dominio Unix?), Dove è presumibilmente registrato con un ( a quel processo) meccanismo di multiplexing (ad es. un'istanza epoll)?

Sto cercando di comprendere meglio il funzionamento interno di Node.js, ma non riesco a trovare molte informazioni definitive a questo livello. Qualsiasi aiuto è molto apprezzato.

Grazie

Risposta accettata:

Vedi child.send() nel modulo nodejs child_process. In poche parole, lo fai:

child.send('socket', socket);

Dove 'socket' è un nome di messaggio speciale e si invia un riferimento all'oggetto socket nodejs. Nodejs quindi gestisce le cose sotto le coperte nel modulo child_process per inviare l'effettivo handle del socket del sistema operativo al processo figlio e quindi collegare un nuovo oggetto socket nodejs ad esso dall'altra parte delle cose.

Ed ecco un riferimento a un articolo sull'argomento:Invio di un socket a un processo fork in Node.JS.


Linux
  1. Nuovo processo genitore quando il processo genitore muore?

  2. Perché il Pgid dei processi figlio non è il Pid del genitore?

  3. Linux:in che modo Oom Killer decide quale processo uccidere per primo?

  4. Linux:come si controllano le informazioni sulla struttura delle directory di un file Unix/linux?

  5. Come funziona il ciclo di vita dei processi Linux:processo padre, figlio e inizializzazione

Come uccidere un processo in Linux? Comandi per terminare

Come elencare i processi in esecuzione in Linux

Come uccidere i processi Zombie in Linux

Come inviare processi in background su Linux

Come calcolare l'utilizzo della CPU di un processo e tutti i suoi processi figlio in Linux?

Come forzare Linux a riacquisire un nuovo indirizzo IP dal server DHCP?