我想设置4个不同的node.js实例,每个实例都在自己的核心上。 node.js是否在同一个核心上堆叠新实例,或者也将它们设置在新核心上?
实例不相关并单独接收请求。我希望cpu负载均匀分布。 我无法找到这个问题的明确答案。
答案 0 :(得分:7)
一般情况下,系统会尝试自己动手,以最大限度地利用cpu。但是,如果要定位特定CPU,则应查看TaskSet。它设定了这个过程的亲和力。
还有几个讨论相同主题的有用问题。看看。
How to deploy Node.js in cloud for high availability using multi-core
还有一个模块Cluster,它对CPU利用率也非常有用。它允许您分叉多个进程以将负载分配给多个核心。
<强>更新强>
最后,根据OP,我已经部署了类似的东西。
案例1。
案例2。
我还建议您尝试一些上面提到的解决方案,并在每种情况下继续监控您的系统;像CPU,内存使用和io。最后,从您的测试中,您将看到针对您的用例的最佳解决方案。每个应用程序都有自己的要求,因此最好尝试查找应用程序真正需要的内容。
答案 1 :(得分:0)
试试这个:
var cluster = require('cluster')
, 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.pid + ' died');
});
return;
}
完整代码here
另外,看here