发生快速错误时,pm2 不会重启 worker
pm2 does not restart worker when express error occur
我正在使用 pm2 管理我的 nodejs express 应用程序中的进程(运行 在集群模式下)。
我们有两种错误处理程序
首先:'uncaughtException' 将用
处理
process.on('uncaughtException', function(err){});
实际上,我没有声明这样的处理程序,因为在这种情况下让 pm2 检测死亡的 worker,所以自动重启死亡的 worker。
SECOND: express error handler,我的意思是错误将被转发给express error handler,而不是uncaughtException handler,如下所示的错误处理程序
app.use(function(err, req, res, next) {})
我也没有出于与 uncaughtException 相同的目的声明此错误处理程序。
但是在这种情况下 pm2 不会重启节点。
知道这个问题吗?
非常感谢
当使用快速错误处理程序甚至 "uncaughtException" 事件捕获错误时,进程仍然是 运行,因此 pm2 不会重新启动它。
如果你希望 pm2 在每次异常后重新启动,我建议这样:
process.on('uncaughtException', function(e) {
console.log('An error has occured. error is: %s and stack trace is: %s', e, e.stack);
console.log("Process will restart now.");
process.exit(1);
})
快速错误处理程序也是如此。当我们执行 process.exit 方法时,进程将终止,pm2 将重新启动它。
我正在使用 pm2 管理我的 nodejs express 应用程序中的进程(运行 在集群模式下)。
我们有两种错误处理程序
首先:'uncaughtException' 将用
处理process.on('uncaughtException', function(err){});
实际上,我没有声明这样的处理程序,因为在这种情况下让 pm2 检测死亡的 worker,所以自动重启死亡的 worker。
SECOND: express error handler,我的意思是错误将被转发给express error handler,而不是uncaughtException handler,如下所示的错误处理程序
app.use(function(err, req, res, next) {})
我也没有出于与 uncaughtException 相同的目的声明此错误处理程序。 但是在这种情况下 pm2 不会重启节点。
知道这个问题吗? 非常感谢
当使用快速错误处理程序甚至 "uncaughtException" 事件捕获错误时,进程仍然是 运行,因此 pm2 不会重新启动它。 如果你希望 pm2 在每次异常后重新启动,我建议这样:
process.on('uncaughtException', function(e) {
console.log('An error has occured. error is: %s and stack trace is: %s', e, e.stack);
console.log("Process will restart now.");
process.exit(1);
})
快速错误处理程序也是如此。当我们执行 process.exit 方法时,进程将终止,pm2 将重新启动它。