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

Why are there multiple node.js processes when I start my app on a single core machine

情况

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

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

但是当我 运行 我的暂存应用 maching(AWS Ubuntu EC2 微型实例)时,我通过 htop 看到有五个相关进程 运行宁我的应用程序而不是预期的一个进程。

分析

每个进程使用完全相同的内存。 在我查看 parents htop 进程后,有一个节点 parent 有四个 children.

我试图杀死一个导致完全崩溃的 child 进程(当 运行ning 没有 pm2 时)所以似乎每个进程都是必需的。

问题

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

感谢您帮助理解它。

节点只有一个进程,但它有很多线程。标准 top 包括 OS X 进程监视器显示进程。默认情况下 htop 显示线程。您可以通过按 H.

来切换显示模式

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