【发布时间】:2011-12-29 23:34:53
【问题描述】:
我正在用 NodeJS 做一些试验。我遇到以下代码的问题。一段时间后,从集群中的工作人员发送到主服务器的消息似乎不再被处理。
这是 NodeJS 网站上的集群示例之一的变体。
var cluster = require('cluster');
var numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
console.log("Starting cluster ...");
for (var i = 0; i < numCPUs; i++) {
var worker = cluster.fork();
worker.on('death', function(worker) {
console.log('worker ' + worker.pid + ' died. restart...');
cluster.fork();
});
worker.on('message', function(msg) {
if (msg.cmd == 'reached') {
console.log('Worker %d reached another 10000', msg.workerId);
}
});
}
} else {
console.log("Started worker %d ...", process.env.NODE_WORKER_ID);
var i = 0;
while (true) {
if (i++ % 10000 == 9999) {
process.send({ cmd: 'reached' , workerId: process.env.NODE_WORKER_ID });
console.log('haha');
}
}
}
当代码运行时,预期的消息“工人 1 达到另一个 10000”被很好地打印出来。但仅仅几秒钟后,它就停止了,只打印了 process.send 后面的“哈哈”。
我做错了什么?
我正在使用 NodeJS 0.6.6
【问题讨论】: