gpt4 book ai didi

javascript - Node.js 集群主进程在 kill & pgrep 后重启?

转载 作者:行者123 更新时间:2023-11-30 08:50:05 25 4
gpt4 key购买 nike

第一个问题:

在 Node.js 集群中,我知道如果集群 worker 崩溃或被杀死,它将使用新实例再次自动启动。但是,如果当主进程被杀死时,如果主进程被杀死或崩溃,我们如何让主进程再次自动启动呢?我试图杀死主进程,整个集群也被杀死了。有什么办法可以防止这种情况发生吗?

if (cluster.isMaster) {
require('os').cpus().forEach(function () {
cluster.fork();
});

cluster.on('exit', function (worker, code, signal) {
cluster.fork();
});
} else if (cluster.isWorker) {
...
}

第二个问题:

我认为我们可以从 process.pid 中找到主进程。但是如果没有来自 Node.js 的信息并查看 pgrep -l node 的输出,我如何确定哪个是主进程 ID?无论如何,我可以在 fork() 时标记或命名进程,以便我可以在 pgrep 命令中找到主进程吗?

$ pgrep -l node
1420 node
1419 node
1418 node
1417 node
1416 node
1415 node
1414 node
1413 node
1412 node

已更新

在我按照@fardjad 在下面建议的那样应用process.title 之后,它运行得很漂亮。这是 pgrep 的结果:

  $ pgrep -fl acl
1994 acl_api_worker_8 USER=nam
1993 acl_api_worker_7 USER=nam
1992 acl_api_worker_6 USER=nam
1991 acl_api_worker_5 USER=nam
1990 acl_api_worker_4 USER=nam
1989 acl_api_worker_3 USER=nam
1988 acl_api_worker_2 USER=nam
1987 acl_api_worker_1 USER=nam
1986 acl_api_master SHELL=/bin/bash

最佳答案

我建议您不要监控集群中的 master 进程,因为您将无法处理 SIGKILL。为此,您可以使用 upstartmonitforever

关于你的第二个问题,你可以设置流程标题:

if (cluster.isMaster)
process.title = 'master';
...
}

参见 docs了解更多信息。

关于javascript - Node.js 集群主进程在 kill & pgrep 后重启?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18650527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com