如何修复NodeJS未充分利用CPU内核?

时间:2017-03-29 07:41:20

标签: node.js performance go multiprocessing cpu-usage

根据此页面Go vs Node.js,Node.js在运行cpu密集型代码时没有显示充分利用CPU内核。

如果我使用虚拟化并只添加更多Node.js实例,我是否会获得与Go相同的性能?我认为仍然会有管理费用,而且我们无法达到相同的性能。

3 个答案:

答案 0 :(得分:1)

多个进程都可以。对于4个cpus / threads,您需要4个Node.js进程才能使用它们。这需要可以在进程之间拆分的工作负载。

Node.js提供Cluster模块来分配多个工作进程之间的套接字连接,这可能有助于某些工作负载,但我怀疑这会对任何基准工作负载有所帮助。

答案 1 :(得分:0)

您需要安装nodejs的Cluster模块,以便在运行cpu密集型代码时充分利用CPU内核。

答案 2 :(得分:0)

Node.js确实是一个单线程进程。但是,您可以使用clustering在多个核心上生成多个worker。

如果您没有使用PM2来生成应用,请考虑使用它。 PM2使多个核心的产卵工人变得非常容易。

  

pm2启动app.js -i max

此命令将在每个可用核心上生成工作者。

另请注意,如果您使用的是会话/套接字,那么由于群集可能会遇到一些问题。