マルチコアCPUを利用するためのmiltipleサーバーを作成するために使用される次のコードを理解しようとしています。
var cluster = require("cluster");
var http = require("http");
var numCPUs = require("os").cpus().length;
var port = parseInt(process.argv[2]);
if (cluster.isMaster) {
for (var i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on("exit", function(worker, code, signal) {
cluster.fork();
});
} else {
http.createServer(function(request, response) {
console.log("Request for: " + request.url);
response.writeHead(200);
response.end("hello world\n");
}).listen(port);
}
私の質問は、作成されたすべてのサーバーが同じポートでリッスンする場合、リクエストが複数のサーバーによって処理されないことを保証するものは何ですか?
ノードv0.10では、OSカーネルは常にどの子がリクエストを取得するかを選択します。ノードv0.11 +およびio.jsv1.0.0 +では、手動ラウンドロビンスケジューリングが使用されます(現時点ではWindowsを除く)。ただし、このデフォルトの動作は、環境変数を設定することで構成できます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加