【发布时间】:2012-04-01 00:59:20
【问题描述】:
鉴于以下 nodejs 代码。当我针对 localhost:8080 运行 ab(apache 基准测试)测试时,我只看到服务请求的主进程。但是,如果我从主进程中删除服务器的句柄,那么我会看到分叉的进程交换进出。有什么我不知道的充分理由吗?
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);
}
【问题讨论】:
-
小记。这是在 linux 机器上
-
请仔细标记。这不是cluster-analysis 的问题,而只是经典的load-balancing。我猜它也可能更适合服务器故障。
-
@Anony-Mousse 不,这显然是 NodeJS 的问题,而不是服务器本身。