Javascript nodejs-集群中的最佳工作人员数量

Javascript nodejs-集群中的最佳工作人员数量,javascript,node.js,performance,worker,Javascript,Node.js,Performance,Worker,在多核处理器上群集节点时- const numpus=require('os').cpus().length; for(设i=0;i

在多核处理器上群集节点时-

const numpus=require('os').cpus().length;
for(设i=0;i
我的问题是-

  • 如果一个多核处理器正在运行一个带有反向代理终止ssl(cpu密集型)、Gzip(cpu密集型)和做其他事情的web应用程序+还有其他服务器在做主nodejs服务器的cpu密集型工作,那么产生与cpu核数(对于主nodejs服务器)一样多的工作人员仍然明智吗

  • 应该进行哪些测试以找到最佳的工人数量

  • 你可以

  • 每个可用核心应该有一个工人。可用核心是指不会被其他流程大量利用的核心

  • 为确保一切正常,您的
    (CPU负载/内核数)
    应低于1

    尝试为您的机器提供很少的不同服务/进程。一开始这可能看起来很浪费,但它通过限制级联故障的影响,帮助MMTD和MMTR处理事件

    注意:这个问题通常最好在另一个Stack Exchange站点上提出

  • 你可以

  • 每个可用核心应该有一个工人。可用核心是指不会被其他流程大量利用的核心

  • 为确保一切正常,您的
    (CPU负载/内核数)
    应低于1

    尝试为您的机器提供很少的不同服务/进程。一开始这可能看起来很浪费,但它通过限制级联故障的影响,帮助MMTD和MMTR处理事件


    注意:这个问题通常最好在另一个Stack Exchange站点上提出。

    因为您没有提供关于任何进程在任何特定负载下的CPU需求的定量数据,如果不设计一个具有代表性的负载测试,并使用多个不同数量的nodejs进程(最多
    numpus
    )运行它,看看哪一个进程提供了最佳的总体吞吐量,就无法回答您的问题。即使你有一些有意义的定量数据,你仍然可能需要运行测试来验证你的决定。多几个过程可能不是问题,而是不够。没有足够的内存会导致CPU闲置和容量完全浪费。太多的进程只是添加了几个上下文开关来在它们之间交换CPU。我在过去的生产中使用我的答案中找到的信息实现了这一点。如果你还有任何问题,请告诉我。它被否决了by@jfriend00,但我可以向您保证,此解决方案确实有效,并且具有强大的生产能力。由于您没有提供任何关于任何进程在任何特定负载下的CPU需求的定量数据,如果不设计一个具有代表性的负载测试,并使用多个不同数量的nodejs进程(最多
    numpus
    )运行它,看看哪一个进程提供了最佳的总体吞吐量,就无法回答您的问题。即使你有一些有意义的定量数据,你仍然可能需要运行测试来验证你的决定。多几个过程可能不是问题,而是不够。没有足够的内存会导致CPU闲置和容量完全浪费。太多的进程只是添加了几个上下文开关来在它们之间交换CPU。我在过去的生产中使用我的答案中找到的信息实现了这一点。如果你还有任何问题,请告诉我。它被否决了by@jfriend00,但我可以向您保证,此解决方案确实有效,而且生产能力很强。这似乎无法回答OP提出的任何问题。他们的问题是关于在同一台主机上运行大量使用CPU的其他进程的情况。问题是如何优化总吞吐量,而不仅仅是NodeJ工作。如果可能的话,我建议将每个节点进程放在一个独占的核心中。OP是询问以集群形式运行多少NodeJ进程。操作系统将决定亲和力。当服务器上发生许多其他事情时,您不能将所有CPU都分配给NodeJ。默认情况下,操作系统将决定亲和性,但您也可以。这就是我的观点的意义。这就是我们公司的设置。你完全忽略了问题的要点,即在同一台主机上有几个其他进程在做CPU密集型工作。你基本上还没有回答这些问题。您的回答就像主机上除了nodejs之外没有其他操作一样。事实并非如此,这似乎并没有回答OP提出的任何问题。他们的问题是关于在同一台主机上运行大量使用CPU的其他进程的情况。问题是如何优化总吞吐量,而不仅仅是NodeJ工作。如果可能的话,我建议将每个节点进程放在一个独占的核心中。OP是询问以集群形式运行多少NodeJ进程。操作系统将决定亲和力。当服务器上发生许多其他事情时,您不能将所有CPU都分配给NodeJ。默认情况下,操作系统将决定亲和性,但您也可以。这就是我的观点的意义。这就是我们公司的设置。你完全忽略了问题的要点,即在同一台主机上有几个其他进程在做CPU密集型工作。你基本上还没有回答这些问题。您的回答就像主机上除了nodejs之外没有其他操作一样。这里的情况并非如此。
    const numCPUs = require('os').cpus().length;
    for (let i = 0; i < numCPUs; i++) {
        cluster.fork();
      }