Javascript “我怎么能耽搁呢?”;“在线”;pm2下集群进程的事件?

Javascript “我怎么能耽搁呢?”;“在线”;pm2下集群进程的事件?,javascript,node.js,pm2,Javascript,Node.js,Pm2,我的nodejs应用程序需要一段时间才能接受请求(编译资源等) 当我在集群模式下在pm2下运行它并触发重新加载时,pm2开始一个接一个地重新加载实例——但它不会等到应用程序真正能够接受请求,然后重新启动其他实例——这会导致所有实例停机一段时间 通过pm2源代码查看,它似乎在等待来自工作进程的“在线”事件,而该事件发生得太快 是否有办法延迟此在线事件以实现正常重新加载 以下是测试用例: var http = require("http"); setTimeout(() => { var

我的nodejs应用程序需要一段时间才能接受请求(编译资源等)

当我在集群模式下在pm2下运行它并触发重新加载时,pm2开始一个接一个地重新加载实例——但它不会等到应用程序真正能够接受请求,然后重新启动其他实例——这会导致所有实例停机一段时间

通过pm2源代码查看,它似乎在等待来自工作进程的“在线”事件,而该事件发生得太快

是否有办法延迟此在线事件以实现正常重新加载

以下是测试用例:

var http = require("http");

setTimeout(() => {
  var server = http.createServer((req, res) => {
    res.statusCode = 200;
    res.setHeader("Content-Type", "text/plain");
    res.end("hello\n");
  });

  server.listen(7000, "127.0.0.1", () => {
    console.log("server ready");
  });
}, 10000);
从pm2启动应用程序-i 2开始,然后尝试使用pm2重新加载应用程序重新加载。 在我的机器上,当应用程序根本不响应请求时,大约有4个窗口:

curl: (7) Failed to connect to localhost port 7000: Connection refused

(您可以方便地监控应用程序是否与
watch curl-sS localhost:7000联机)

增加优雅的\u LISTEN\u超时值可以解决问题-默认情况下,它设置为3秒,这意味着pm2放弃得太快,并继续下一个实例

可以按如下方式更改值:

PM2_GRACEFUL_LISTEN_TIMEOUT=15000 pm2 update