我想设置 4 个不同的 node.js 实例,每个实例都有自己的核心。node.js 是否将新实例堆叠在同一个核心上,或者也将它们设置在新核心上?
这些实例是不相关的并且单独接收请求。我希望 CPU 负载均匀分布。我一直无法找到这个问题的明确答案。
我想设置 4 个不同的 node.js 实例,每个实例都有自己的核心。node.js 是否将新实例堆叠在同一个核心上,或者也将它们设置在新核心上?
这些实例是不相关的并且单独接收请求。我希望 CPU 负载均匀分布。我一直无法找到这个问题的明确答案。
一般系统会尽量自己做这个,最大限度的利用cpu。但是,如果您想针对特定的 CPU,您应该查看TaskSet。它设置了过程的亲和力。
还有几个有用的问题讨论了同一主题。看一看。
还有一个模块Cluster对 CPU 利用率也非常有用。它让您分叉多个进程以将负载分配到多个内核。
更新
最后,我根据 OP 部署了类似的东西。
情况1。
案例 2。
我还建议您尝试一些提到的解决方案,并在每种情况下继续监控您的系统;比如 CPU、内存使用和 io。最后,从您的测试中,您将看到最适合您的用例的解决方案。每个应用程序都有自己的要求,因此最好尝试找到您的应用程序真正需要的内容。
尝试这个:
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;
}
完整代码在这里
还有,看这里