gpt4 book ai didi

node.js - 多核处理器上的 Node Js

转载 作者:行者123 更新时间:2023-12-03 23:27:13 24 4
gpt4 key购买 nike

首先,我有一种直觉,这是一个完全完整的问题,但无论如何请听我说完。我在想,如果 Node Js 是一个单线程应用程序,那么我们是否可以在同一台机器上的不同端口上运行它的多个实例。假设我有 8 个线程处理器,这是否意味着我可以运行 8 个 Node 实例而不会影响性能。如果我安装了足够的内存,然后我可以为这 8 个实例进行负载平衡

最佳答案

(此处为 V8 开发人员。)

是的,一般来说,在同一台机器上运行多个 Node 实例可以增加完成的工作总量。这类似于拥有多个 Chrome 选项卡,每个选项卡都可以执行一些单线程 JavaScript 工作。

也就是说,它很可能不像“8 线程处理器上的 8 个实例提供 8 倍的总吞吐量”那么简单,原因如下:

(1) 如果您实际上是指“8 个线程”,即 4 个内核 + 超线程,那么从 4 个进程到 8 个进程可能会带来 20-40% 的改进(取决于硬件架构和特定工作负载),而不是 2 倍。

(2) V8 确实使用多个线程用于内部目的(主要是编译和垃圾收集),这也是单个 Node 实例可能(取决于工作负载)使用多个 CPU 内核/线程的原因之一。

(3) 另一个原因是虽然 JavaScript 是单线程的,但 Node 不仅仅执行 JavaScript 的单线程。后台发生的各种事情(准备就绪时会触发 JS 回调)也需要 CPU 资源。

(4) 最后,CPU 不一定是你的瓶颈。如果您的服务器的性能受到限制,例如网络或磁盘,然后产生更多实例将无济于事;相反,它可能会使事情变得更糟。

长话短说:尝试并没有什么坏处。第一步,在一个实例上运行一个典型的工作负载,并查看当前的系统负载(CPU、内存、网络、磁盘)。如果它们都有足够的空闲容量,请尝试转到两个实例,测量是否增加了整体吞吐量,然后再次检查系统负载。然后继续添加实例,直到您注意到它不再有帮助。

关于node.js - 多核处理器上的 Node Js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61893497/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com