为什么在单核机器上启动我的应用程序时会有多个 node.js 进程

Ber*_*ard 12 memory process node.js

情况

我实际上是在我的服务器和本地机器上分析我的 node.js 应用程序以进行内存优化,并发现了一些令人困惑的东西。

如果我在本地 (mac osx) 运行我的应用程序并在系统活动监视器中看到单个进程 - 这就是我所期望的,因为没有子进程与例如集群一起启动。

但是当我在我的登台机器(AWS Ubuntu EC2 微型实例)上运行应用程序时,我看到htop有五个相关进程在运行我的应用程序,而不是预期的一个进程。

htop截图进程列表

分析

每个进程使用完全相同的内存。在我查看了父进程htop出现后,有一个节点父节点有四个子节点。

htop 进程层次结构

我试图杀死一个导致完全崩溃的子进程(在没有pm2 的情况下运行时),因此似乎每个进程都是必需的。

为什么操作系统之间存在差异,为什么节点在ubuntu系统上显然需要多个进程。

感谢您帮助理解它。

Cri*_*_SO 5

Node只有一个进程,但有很多线程。该标准top包括 OS X 进程监视器显示进程。默认情况下htop显示线程。您可以通过按 键切换显示模式H

V8 有自己的线程 - 包括 GC,Node 在某些情况下可以有自己的线程,libuv 启动UV_THREADPOOL_SIZE线程 - 这些是异步 I/O 的线程。Node 可执行文件中有很多线程。