私は労働者を作成しようとし、それは正常に動作します。それには4つのコアがあり、複数の試行で1人のワーカーからのメッセージしか表示されません。ノードjsクラスター - それはどのように動作する
var app = express();
app.use(express.static('public'));
app.use(bodyParser.urlencoded({ extended: false }));
if (cluster.isMaster) {
var cpuCount = os.cpus().length ;
console.log("No. of cpus:", cpuCount);
for(var i = 0; i < cpuCount; i++) cluster.fork();
cluster.on('listening', function(worker, address) {
console.log('woker id:' + worker.id +' is now listening on port:' + address.port);
});
} else {
console.log("i'm a worker.. ... lets proceed");
var server = app.listen(8082, function(req, res) {
var host = server.address().address;
var port = server.address().port;
request(i18n.__('url.config'), function(error, response, body){
if (!error && response.statusCode == 200) {
} else {
console.log("Config error",error);
}
});
}); // child process
}// else
//Listen for dying workers
cluster.on('exit', function (worker) {
// Bring that ... ..er back
console.log('Worker %d died :', worker.id);
cluster.fork();
});
cluster.on('online', function (worker) {
// worker is alive
console.log('Worker %d is alive :', worker.id);
});
app.get('/hey', function(req, res){
console.log('Worker %d running!', cluster.worker.id);
res.send('Hello World from worker ' + cluster.worker.id);
});
後で、ワーカーの内部で明示的なオブジェクトの作成をインスタンス化して作成するコードを変更しました(elseループ)。出力は同じです。 4
デバッガポート5859
をリッスンデバッガをリスニング:デバッガは、CPUのポート5858
号をリッスン
if (cluster.isMaster) {
var cpuCount = os.cpus().length ;
console.log("No. of cpus:", cpuCount);
for(var i = 0; i < cpuCount; i++) cluster.fork();
cluster.on('listening', function(worker, address) {
console.log('woker id:' + worker.id +' is now listening on port:' + address.port);
});
} else {
var app = express();
console.log("i'm a worker.. ... lets proceed");
var server = app.listen(8082, function(req, res) {
var host = server.address().address;
var port = server.address().port;
request(i18n.__('url.config'), function(error, response, body){
if (!error && response.statusCode == 200) {
} else {
console.log("Config error",error);
}
});
app.get('/hey', function(req, res){
console.log('Worker %d running!', cluster.worker.id);
res.send('Hello World from worker ' + cluster.worker.id);
});
}); // child process
}// else
ノード--debug server.js
オンポート5860
デバッガが... ...私は労働者だポート5862
にリスニングポート5861
デバッガでリッスン
woker IDを続行することができます:1は、現在のポートでリッスンしている:8082
私は労働者だ... ...私は労働者だ
を進めることができます... ..私は労働者だ
を進めることができます。.. ...を進めることができます
woker番号:4は、現在のポートでリスニングしている:8082
woker番号:3は、現在のポートでリスニングしている:8082
woker番号:2は、現在のポートでリスニングしている:8082
ワーカー2ランニング!
ワーカー2実行中!
ワーカー2実行中!
ワーカー2実行中!
正しい作業者作成方法は?ポートでリスニングして以来、世界的に明示的なオブジェクトの作成は問題を引き起こすでしょうか?
おかげについて説明します。 – Martin