私は node.js のマスターではないので、これについてもっと多くの視点を持ちたいと思います。
多くの同時接続だけでなく、長時間実行されるジョブも処理する必要がある HTTP node.js Web サーバーを作成しています。デフォルトでは、node.js は 1 つのプロセスで実行されます。実行に時間がかかるコードがある場合、後続の接続はコードが前の接続で行っていたことを終了するまで待機する必要があります。
例えば:
var http = require('http');
http.createServer(function (req, res) {
doSomething(); // This takes a long time to execute
// Return a response
}).listen(1337, "127.0.0.1");
そこで、 node-webworkerライブラリを使用して、長時間実行されるすべてのジョブを個別のスレッドで実行することを考えていました。
var http = require('http');
var sys = require('sys');
var Worker = require('webworker');
http.createServer(function (req, res) {
var w = new Worker('doSomething.js'); // This takes a long time to execute
// Return a response
}).listen(1337, "127.0.0.1");
また、全体のパフォーマンスを向上させるために、クラスターを使用して各 CPU コアに新しいノード プロセスを作成することも考えました。
このようにして、さまざまなプロセスcluster
(クアッドコアで実行する場合は4ノードプロセスとしましょう)を介したクライアント接続のバランスを取り、 node-webworker
.
この構成に何か問題がありますか?