不同核心上的多个node.js实例

我想设置4个不同的node.js实例,每个实例都在自己的核心上。 node.js是否将新实例堆叠在同一个内核上,还是将它们设置在新内核上?

这些实例是不相关的,并单独接收请求。 我希望CPU负载均匀分布。 我一直无法find这个问题的明确答案。

一般来说,系统会尽量做到这一点,以最大限度地利用CPU。 但是,如果你想要一个特定的CPU,你应该检查出TaskSet 。 它设置了过程的亲和力。

还有几个有用的问题讨论同一主题。 看一看。

  1. Upstart:每个进程在不同的核心Nodejs上

  2. Node.js – 针对一个CPU核心

  3. 多核机器上的Node.js

  4. 在AmazonEC2 cpu核心和nodejs中

  5. 如何在云中部署Node.js以实现使用多核的高可用性

  6. 多节点模式利用CPU

还有一个模块, 群集 ,也可以非常有用的CPU利用率。 让你分叉多个进程分配负载到多个核心。


UPDATE


最后,我根据OP部署了类似的东西。


情况1。


  1. 我有一个专用服务器与8核心的CPU。
  2. 我已经部署了单节点线程,并使用Cluster模块来共享工作负载(正如pl47pypus PS所描述的:感谢他的回答)。
  3. 结果是好的,但有时子线程可能变得没有反应,所以我决定尝试一下我以前的应用程序中使用的旧进程。

案例2。


  1. 同样的服务器,我已经部署了8个不同端口的node.js进程。
  2. 然后我把nginx放在这些前面,用端口80听着工作进程8。
  3. 结果比情况1更好,也很容易configurationnginx,它也是最稳定的。

我也build议你尝试一下上面提到的解决scheme,并在每种情况下继续监视你的系统。 像CPU,内存使用和io。 最后,从您的testing中,您将看到您的用例的最佳解决scheme。 每个应用程序都有自己的要求,所以最好去尝试找出你的应用程序真正需要的东西。

尝试这个:

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; } 

在这里完成代码

另外,看这里