发生快速错误时,pm2不会重新启动工作程序

时间:2015-11-11 04:01:32

标签: node.js express error-handling uncaught-exception pm2

我使用pm2来管理我的nodejs express应用程序中的进程(以群集模式运行)。

我们有两种错误处理程序

  • FIRST:' uncaughtException'将用

    处理
    process.on('uncaughtException', function(err){});
    

实际上,在这种情况下,我没有声明像这样的处理程序让pm2检测到死亡工作者,因此自动重启死亡工作者。

  • SECOND:表达错误处理程序,我的意思是将错误转发给表达错误处理程序,而不是uncaughtException处理程序,错误处理程序如下

    app.use(function(err, req, res, next) {})
    

我也没有将此错误处理程序声明为与uncaughtException相同的目的。 但在这种情况下,pm2不会重启节点。

对这个问题有什么看法吗? 非常感谢

1 个答案:

答案 0 :(得分:3)

当使用快速错误处理程序或甚至“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将重新启动它。