sails.js 多个子进程,那些是啥? Ubuntu

Posted

技术标签:

【中文标题】sails.js 多个子进程,那些是啥? Ubuntu【英文标题】:sails.js multiple child process, what are those? Ubuntusails.js 多个子进程,那些是什么? Ubuntu 【发布时间】:2016-06-30 02:19:58 【问题描述】:

根据htop,通过永远运行sails 或直接使用node app.js --prod 调用它,我有一个看起来像克隆的4 个子进程。

如果我省略 --prod 参数,我会得到等量的 grunt 进程。 如您所见,它们都使用相同数量的内存、不同的 PID 和不同的 TIME+ 读数。

我很确定它不是自动集群,是吗?这是一台单核机器(虚拟机),所以我不知道这些进程是什么,还是 htop 中的错误?

根据这个问题htop-showing-multiple-java-processes-with-different-pids?rq=1

htop 将线程显示为不同的进程,但节点不是单线程的吗?如果这些是线程,它们来自哪里?

【问题讨论】:

【参考方案1】:

您使用 htop 看到的线程是用户态线程(用户线程),但是当您在集群模式下运行应用程序(例如 4 个实例)时,它会生成内核线程。 more on user threads

当您隐藏用户态线程时,您所看到的都是内核线程。在集群模式下运行应用程序时,您将创建一个应用程序的多个内核线程。对于每个应用程序的内核线程,都有几个与之关联的用户态线程。

(对于 htop,您可以通过 F2 隐藏用户区线程并显示选项)

请查看屏幕截图以了解说明。

four instances of my app in cluster mode since number of cores==4

ps commands showing kernel threads only

htop showing kernel threads only

htop showing kernel threads along with userland threads

在上一个屏幕截图中,您可以看到一些内核和用户空间的线程,但还有更多。 我的意思是每个内核线程都有一些与之关联的用户态线程。

【讨论】:

那么这些用户线程是 node.js 线程池吗(我知道节点事件循环是单线程的,但它需要后台线程来处理其他所有事情)?还是那些由框架创建的? 是的......这些是节点应用程序用来维护它的事件循环和其他所有东西的线程......默认情况下,每个应用程序都有它自己的多个用户态线程。这些线程由创建和控制仅限应用程序。

以上是关于sails.js 多个子进程,那些是啥? Ubuntu的主要内容,如果未能解决你的问题,请参考以下文章

sails.js 和多个参数

sails.js在mysql中运行多个命令查询

Sails.js 填充嵌套关联

apache当前并发访问数是啥?apache进程数,子进程数都是啥意思呀??

如何在sails.js 中启用http/2

Node.js / Express with vhost 与 Sails.js 框架应用程序冲突