2012-02-26 4 views
0

多くの子サーバーの状態を処理するnodejs tcpサーバーがあります。状態サーバーが子サーバーにアクションを実行するよう指示すると、高価になる可能性があります。 (約1分)、場合によっては数秒で完了します。潜在的に高価なタスクを実行する

子サーバーが何をしているのか(WebSocketをリッスンし、非常に多くのデータを頻繁に渡すため)、この高価なタスクを実行しているときに子サーバーを停止させる余裕はありません。

もちろん、nodejsには新しいスレッドを生成する機能がありません。この潜在的に高価なタスクを実行するために新しいプロセスを作成する価値があるでしょうか、親サーバーから送信されるコマンドによって高価になる時期を判断できます。

+0

それは、メッセージキューを使用して、代わりにワーカープロセスのカップルを作成することはできませんか? – Alfred

答えて

1

Node.jsには他のプロセスを起動する機能があり、それらを非常にうまく処理します。 node.jsのドキュメントのchild_processesを調べてください。特にforkコマンドを使用すると、他のnode.jsジョブを生成し、メッセージチャネル経由でそれらと通信することができます。

Node.js Child Processes Node.js Fork

http://nodejs.org/docs/latest/api/child_processes.html#child_process.fork

+0

これらはスレッドではなく、プロセスです。 – Raynos

+0

あなたはもちろんそうです。私はコーヒーが必要!回答が更新されました。 –

+0

ドキュメントによれば、「これらの子ノードはまだV8の全く新しいインスタンスです。新しいノードごとに少なくとも30msの起動と10MBのメモリがあると仮定します。つまり、数千ものノードを作成することはできません。あなたはこれらの多くを作成することはできません。しかし、あなたがその多くのprocessessを産んでいないとうまくいくかもしれません。 – Alfred

関連する問題