利用cluster来让程序充分利用多核CPU
发布于 11 年前 作者 frosh 5199 次浏览 最后一次编辑是 8 年前

在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脚本来重启这个进程比较合适

回到顶部