私はnode.jsマスターではありませんので、私はこれについてより多くの視点を持ちたいと思います。クラスターとノードwebworkerを使用した高性能な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");
を、全体の事はよりパフォーマンスにするために、私はclusterを使用して各CPUコア用の新しいノードプロセスを作成することも考えました。
cluster
(私はそれをクアッドコアで実行すると4つのノードプロセスを考えてみましょう)と異なるプロセスでクライアント接続のバランスをとることを期待してから、別のスレッドで長時間実行するジョブをnode-webworker
で実行します。
この設定に問題がありますか?
最終更新2年前 –