2012-03-20 5 views
2

以下のnodejsコードを指定します。 localhost:8080に対してab(apacheベンチマーク)テストを実行すると、要求を処理しているマスタープロセスのみが表示されます。しかし、マスタプロセスからサーバーへのハンドルを削除した場合、フォークされたプロセスがスワップアウトされていることがわかります。私が気付いていないこのための正当な理由はありますか?メインプロセスとチャイルドプロセスのサーバーがクラスタリングされているときにhttp server quandryをクラスタリングします。

var cluster = require('cluster'); 
var server = require('http').createServer(function(req,res){ 
    res.writeHead(200); 
    var served = process.env.NODE_WORKER_ID || "master"; 
    console.log("hello world I was served by " + served); 
    setTimeout(function() { 
    res.end("hello world I was served by " + served); 
    }, 1000); 
}); 
if(cluster.isMaster){ 
    for(var i = 0; i < 2; i++){ 
    cluster.fork(); 
    } 
server.listen(8080); 
}else{ 
    server.listen(8080); 
} 
+0

小さなノートを使用してbencmarkことができます。これはLinuxマシン上にあります – Maleck13

+0

より慎重にタグを付けてください。これは[タグ:クラスタ分析]の質問ではなく、古典的な[タグ:負荷分散]という質問でした。おそらく、serverfaultの方が適切かもしれません。 –

+0

@ Anony-Mousseいいえ、明らかにNodeJSの問題であり、サーバー自体ではありません。 – Mustafa

答えて

0

NodeJSは1-5 msecondsで各requstを処理していると、メインプロセスがちょうど眠っ、何もしていませんので、あなたの要求は、すべての子プロセスに与えられたことはありませんので。何百もの同時接続に対してこれをテストすると、クラスタリングによってthrougput利得が表示されます。ここでは、私は最近のベンチマークをしました。 http://mustafaakin.wordpress.com/2012/03/19/nodejs-simple-clustering-benchmark/

あなたはApache Benchmark

+0

私はApacheのベンチマークを使いました。 3000件のリクエストと150件の同時使用。上記のコードでは、要求はフォークされたプロセスに決して衝突しませんでした。ただし、メインプロセスからサーバーへのハンドルを削除すると、プロセス間で切り替えが開始されます。 – Maleck13

関連する問題