我正在使用Windows 7计算机来测试NodeJS中的群集。
代码如下:
var cluster = require('cluster');
var http = require('http');
var numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
// Fork workers.
for (var i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('exit', function (worker, code, signal) {
console.log('worker ' + worker.process.pid + ' died');
});
cluster.on('listening', function(worker, address) {
console.log("A worker with #" + worker.id + " is now connected to " + address.address + ":" + address.port);
});
} else {
// Workers can share any TCP connection
// In this case its a HTTP server
http.createServer(function (req, res) {
console.log(cluster.worker.id + ' is responding..!!!');
var j = 0;
//long running task
for (var i = 0; i < 10000000000; i++) {
j++;
}
res.writeHead(200);
res.end("hello world\n");
}).listen(8080);
}
当我运行此代码时,看起来所有请求都被发送到最后创建的worker。所有剩余的工作人员都处于空闲状态,而所有请求都是按顺序创建的最后一个节点处理的。
我试图做一些事,但似乎还没有人报告过这个。我在Stack Overflow上看了一篇关于同样问题的帖子,没有解决方案。我使用的是Node v0.10.26。
请指出正确的方向。
答案 0 :(得分:2)
如果他们遇到同样的问题,这个答案适用于其他人。使用不同的浏览器发出HTTP请求,以确保使用不同的工作者。