GNU/Linux >> Linux の 問題 >  >> Linux

Linux – Node.js /クラスターモジュールは、マスター/親プロセスから子プロセスに新しい接続をどのように渡しますか?

これは、内部で/ OSレベルで(主にUnix実装で/ソケットAPIの観点から)どの程度正確に機能しますか?

クラスタモジュールのドキュメントには次のように書かれています:

「マスタープロセスはポートをリッスンし、新しい接続を受け入れて、ラウンドロビン方式でワーカー全体に分散します」

これは、マスタープロセスだけが着信接続でaccept()を処理/呼び出し、返されたソケット記述子をIPCメカニズム(Unixドメインソケット?)を介して事前にフォークされた子プロセスに渡すことを意味します。そのプロセスに)多重化メカニズム(例:epollインスタンス)?

Node.jsの内部動作をよりよく理解しようとしていますが、このレベルで決定的な情報をたくさん見つけることができません。どんな助けでも大歓迎です。

ありがとう

承認された回答:

child.send()を参照してください nodejschild_processモジュール内。一言で言えば、あなたは次のことを行います:

child.send('socket', socket);

'socket'の場所 は特別なメッセージ名であり、nodejsソケットオブジェクトへの参照を送信します。次に、Nodejsは、実際のOSソケットハンドルを子プロセスに送信し、新しいnodejsソケットオブジェクトをもう一方の端に接続するために、child_processモジュールの内部で処理します。

そして、このトピックに関する記事への参照があります:Node.JSのフォークされたプロセスへのソケットの送信。


Linux
  1. 親プロセスが終了したときの新しい親プロセス?

  2. 子プロセスのPgidが親のPidではないのはなぜですか?

  3. Linux – Oom Killerはどのプロセスを最初に殺すかをどのように決定しますか?

  1. Linux カーネルの copy_from_user は内部でどのように機能しますか?

  2. 親プロセスから子プロセスを取得する方法

  3. コマンドラインからGNU/Linuxで特定のプロセスの親PIDを取得するには?

  1. Linux プロセスのライフ サイクルのしくみ – 親プロセス、子プロセス、および初期化プロセス

  2. CからLinuxでPIDによってプロセスのCPU使用率を計算する方法は?

  3. Linux に DHCP サーバーから新しい IP アドレスを強制的に再取得させるにはどうすればよいですか?