PM2 集群模式 - 所有集群在发生错误时重新启动

PM2 集群模式 - 所有集群在发生错误时重新启动

我正在集群模式下运行 NodeJS 应用程序:pm2 start server.js -i max

假设我有 2 个集群(0 和 1)... 我们的应用程序是一个运行 Express 的简单 NodeJS 后端应用程序。但是,有时会出现未处理的错误,导致应用程序关闭(因此 PM2 需要重新启动)。我注意到,每当 PM2 在集群模式下重新启动时,它都会暂时关闭所有集群以重新启动它们...但我只需要重新启动工作线程,而不是所有没有错误的线程。

我们的应用需要几秒钟“重启”才能接受连接(需要连接到数据库)。因此,我们不希望重启的集群在重启后约 30 秒内处于“在线”状态。我们尝试使用,--listen-timeout 30000但问题仍然是所有集群都在重启

笔记:

  • 在 Node 18.7.0 上运行
  • Nginx 反向代理

我创建了一个包含硬编码未处理错误的假端点进行测试。每当我访问此端点并重新检查状态时,pm2 status它都会显示所有集群的“重启数量”值都在增加。

我们在 PM2 5.2.0 上遇到了这个问题,也尝试更新到 5.3.0,但没有任何变化。

我们尝试使用--listen-timeout 30000,但问题仍然是所有集群都在重新启动

该应用程序已实现 try/catch 错误处理程序,但问题是 PM2 无法按我们预期的方式工作。万一我们错过了错误,我们需要 PM2 来避免一切崩溃。

相关内容