Node-forever restartall和子进程

时间:2014-11-02 15:27:23

标签: node.js debian forever

我们有一个主节点进程,它生成了许多带有child_process.fork()的子进程,这些子进程本身都生成了一个帮助子进程。我们使用node-forever来管理主节点进程的生命周期,并经常使用forever restartall来重新启动它。

我们偶尔看到的一个问题是孙子进程将无法终止,我们最终会运行重复的子进程。 IE浏览器。应该是什么:

Main Process
  Child Process 1
    Grandchild Process 1
  Child Process 2
    Grandchild Process 2

restartall之后结束这样:

Main Process
  Child Process 1
    Grandchild Process 1
  Child Process 2
    Grandchild Process 2

    Grandchild Process 1
    Grandchild Process 2

不出所料,这会导致许多奇怪的问题,我们通常必须重新启动整个服务器(或者手动终止进程,如果我们可以确定哪些是旧的)。

据我了解,当它重新启动时,永远会向进程发出SIGTERM消息。我相信这个消息应该级联到子孙进程(但如果我在那里作出了错误的假设,请纠正我)。 由于这个问题可能只发生在100中一次,也许这与时间有关?

什么情况可能导致孙子进程无法终止?如何缓解这种情况?

操作系统是Debian Squeeze。

编辑:我的初步描述有点过于简化。我已将其更新为包含所有细节。

EDIT2:我们不再永远使用了。我推荐PM2

0 个答案:

没有答案