【问题标题】: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 将线程显示为不同的进程,但节点不是单线程的吗?如果这些是线程,它们来自哪里?

【问题讨论】:

    标签: ubuntu sails.js 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 线程池吗(我知道节点事件循环是单线程的,但它需要后台线程来处理其他所有事情)?还是那些由框架创建的?
    • 是的......这些是节点应用程序用来维护它的事件循环和其他所有东西的线程......默认情况下,每个应用程序都有它自己的多个用户态线程。这些线程由创建和控制仅限应用程序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-16
    • 2015-10-03
    • 2014-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多