【问题标题】:Why is my node.js server process cloned?为什么我的 node.js 服务器进程被克隆了?
【发布时间】:2016-04-03 14:29:51
【问题描述】:

为什么我的 node.js 服务器进程被克隆了?自从我提出它以来,我没有提出任何要求。我正在使用永远节点模块。会不会有关系?

【问题讨论】:

  • 运行的时间越长,它会继续这样做吗?还是在一定数量的线程/“克隆”处停止?

标签: node.js process server forever


【解决方案1】:

您看到的是同一节点进程中的线程。 v8(用于优化功能、收集垃圾等)和 libuv/node(用于在大多数平台上执行文件系统操作、DNS 查找、zlib 等)使用额外的线程,所以这些就是您所看到的。

在撰写本文时,v8 最多使用 4 个线程(尽管 an option to configure this previously hardcoded value 在节点 v5.10.0+ 中可用)。此外,libuv 默认创建一个包含 4 个线程的线程池,但可以通过设置 UV_THREADPOOL_SIZE 环境变量来更改此数量。调整这些值时应小心,因为如果设置得太低或设置得太高,可能会对性能产生负面影响。

您可以在 htop 的设置菜单中配置 FWIW(在显示设置下)以显示进程树并使线程具有不同的颜色。这些更改将更容易看出线程和进程之间的区别。

【讨论】:

  • 这是什么意思?为什么我需要更多线程?当我启动服务器时,我只有 2 个线程,但随着时间的推移它们被克隆并且内存使用量增加。我不希望内存使用量像这样增加。
  • 我已经更新了我的答案以包含更多细节。由于它们不是单独的进程,因此不会增加内存使用量。减少线程本身的内存使用的唯一方法是减少操作系统堆栈大小和其他此类资源限制。
猜你喜欢
  • 2012-07-05
  • 2016-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-18
  • 1970-01-01
  • 2021-05-29
相关资源
最近更新 更多