当集群结束时,“状态从 up 变为 crashed”。它应该 fork()

Lau*_*con 1 heroku node.js

我有一个主从应用程序。在我的本地计算机上,一切正常:当奴隶因 a 死亡时 process.exit(0),我分叉并继续。

我抓住它,

cluster.on('exit', function(worker, code, signal) {
    if(code == 0){
        cluster.fork();
    }
});
Run Code Online (Sandbox Code Playgroud)

可悲的是,在 Heroku 上,只要奴隶执行 process.exit(0) "State changed from up to crashed"

有绕过 Heroku 保护措施的想法吗?

Win*_*eld 5

Heroku dynos 是一个虚拟应用程序容器,使用 buildpack 中的所需二进制文件构建,并结合了应用程序代码的发布版本。此应用程序容器的唯一工作是运行由您的Procfile.

如果该进程意外终止,Heroku 会认为 dyno 已崩溃并会尝试重新启动该进程。此外,如果应用程序没有PORT在 60 秒内绑定到指定的,dyno 将崩溃。

如果您的后端工作进程在启动时未绑定到端口,则在发出 之前process.exit(0),它们将永远不会侦听该端口。如果 dyno 在超时内没有绑定到端口,Heroku 会认为它崩溃了。

我的猜测是您立即退出每个子工作进程,导致主进程分叉N子进程,然后重新分叉每个子进程,直到启动超时。