【发布时间】:2020-04-28 23:51:54
【问题描述】:
在仅运行 1 个提取数据馈送的 Node.js 脚本的 Ubuntu 18.04 系统上,htop 显示两个 CPU 内核都在使用。
这个 Node.js 脚本有多个事件监听器,它们接收数据、进行一些数据处理并将它们发送到远程数据库服务器。
foo.on('msg', msg => { setImmediate(() => do_work(msg)) } );
问题:尽管 Node.js 是单线程的,但为什么看起来两个 CPU 内核似乎都被 Node 平等地利用了?观察到的 CPU 负载拆分为 60%/40% 和 50%/50%
它实际上是否同时使用了两个 CPU 内核?或者只是一直非常快速地在它们之间切换,但在任何时候只真正使用 1 个内核?换句话说,当 CPU 工作负载高于 1 个核心但小于 2 个核心时,这种情况会导致系统阻塞。
基本上,我想知道单核系统是否足以应付这种工作负载。谢谢!
【问题讨论】:
-
AFAIK 至少垃圾收集器在自己的线程中运行。
-
有四个节点实例正在运行(第一张图片)。
-
@Xaqron 我只运行了一次 node.js 脚本。除了垃圾收集器,其他 3 个进程还能做什么?处理异步函数调用?
标签: javascript node.js ubuntu multiprocessing