根据此页面Go vs Node.js,Node.js在运行cpu密集型代码时没有显示充分利用CPU内核。
如果我使用虚拟化并只添加更多Node.js实例,我是否会获得与Go相同的性能?我认为仍然会有管理费用,而且我们无法达到相同的性能。
答案 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
此命令将在每个可用核心上生成工作者。
另请注意,如果您使用的是会话/套接字,那么由于群集可能会遇到一些问题。