在nodejs官方网站上面都可以看到这种代码
if(cluster.isMaster){
for(var i = 0 ; i < numCPUS ; i ++){
cluster.fork();
}
cluster.on('exit',function(worker,code,signal){
console.log('worker ',worker.process.pid," is died");
process.exit();
});
}else{
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
}
请看中间的cluster.on(‘exit’)…这里面的部分
我相信很多人都希望当cluster结束后直接再重新开启,会将里面的process.exit()改为cluster.fork()
这一点比较关键,因为这么干了之后就会出现很多cluster.fork()绑定不上的情况,一直循环报错
所以还是让process退出,然后用supervisor脚本来重启这个进程比较合适