我想设置4个不同的node.js实例,每个实例都在自己的核心上。 node.js是否将新实例堆叠在同一个核心上,还是将它们设置在新核心上?不同核心上的node.js的多个实例
这些实例是不相关的并单独接收请求。我希望CPU负载均匀分布。 我一直无法找到这个问题的明确答案。
我想设置4个不同的node.js实例,每个实例都在自己的核心上。 node.js是否将新实例堆叠在同一个核心上,还是将它们设置在新核心上?不同核心上的node.js的多个实例
这些实例是不相关的并单独接收请求。我希望CPU负载均匀分布。 我一直无法找到这个问题的明确答案。
一般来说,系统会尝试这样做,以最大限度地利用cpu。但是,如果你想瞄准一个特定的CPU,你应该检查出TaskSet。它设定了过程的亲和力。
此外还有几个有用的问题讨论同一主题。看一看。
还有一个模块,Cluster,其也可以是用于CPU利用率非常有用的。它让你分叉多个进程分配负载到多个核心。
UPDATE
最后,我已经部署根据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;
}
完整代码here
也看here
你有没有读过这个问题,它不问如何在nodejs中执行多线程,它询问如何在不同的核心上运行不同的节点进程实例。那么使用集群有用吗? –
这是来自nodejs api文档的引用“群集模块允许您轻松创建一个全部共享服务器端口的进程网络。”你想通过同一个端口访问所有进程吗? (http://nodejs.org/api/cluster.html#cluster_cluster) – pl47ypus
首先集群模块是在http://nodejs.org/api/cluster.html#cluster_cluster doc开头明确提及的实验性第二件事情“一个节点的单个实例运行在一个单独的线程中,为了利用多核系统,用户有时需要启动一个Node进程集群来处理负载”因此,请确实读取事情“,它对于启动多个相同过程的实例来平衡负载“ –
你能请添加要实现的方案的一些细节? –
@VivekBajpai我有4个nodejs服务器永远运行,在高峰时间每个人都可能会经历沉重的负载,我认为让他们每个人都设置到自己的核心将有助于在高峰时间。 – GameDevGuru
您是否在像EC2或专用真实服务器这样的虚拟服务器中运行它? –