2016-09-09 44 views
0

我已经搜索了每个核心可以初始化多少个集群,并且我读到的所有文章都悲伤地表示每个核心一个节点足够好。因此,我还没有找到一个很好的解释。每个核心可以初始化多少个Node.js应用程序集群?

我有一个应用程序,它使用大量的I/O并且只做很少的计算,例如从队列中推入/删除,然后将任务安排到数据库。对于这个应用程序,我已经为每个核心初始化了5个集群,并且增加了可以接收的请求数量。然而,服务器的平均负载非常高,有时大约为30。

要点是,使用这种方法的副作用是什么(每个核心有多个节点)?

+0

你对“每个核心有5个集群”有什么意义?经验法则是每个内核有一个工作进程(因此如果您有4个内核,则启动4个工作进程)。 – robertklep

+0

我的意思是每个核心有5个工作进程。我认为你明白了“拇指的作用”,但为什么?我已经开始在有4个核心的机器上处理20名工人。 –

+0

对于除服务器启动以外的任何其他I/O,您是否使用异步I/O?或者你有一些同步I/O撒入你的代码/ – jfriend00

回答

0

单个核心一次只能运行一个进程。

大多数在您的计算机上运行的进程大多处于空闲状态(它们坐在一旁等待发生的事情),这就是您可以在计算机上运行数十或数百个进程而没有太多问题的方式。

但是,处于活动状态的进程会执行很多操作(如进程执行的操作;在这种情况下,还有很多I/O也会计数),请保持CPU内核非常繁忙。因此,为每个内核启动多个此类进程是没有用的,因为它们都将争夺该内核的时间片。

这也是为什么你会得到一个较高的平均负载,这是多少进程要么使用的CPU,或者是等待使用CPU的指示。

相关问题