我正在集群模式下运行 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 来避免一切崩溃。