pm2节点模块可以在崩溃后自动重启应用程序

Tal*_*Kit 25 node.js pm2

我有一个准备好的节点应用程序是可行的,但有已知和未知的错误,崩溃节点应用程序.在这种情况下,如果pm2可以重新启动节点应用程序会很好.此功能是否已在pm2中提供?

jgi*_*ich 31

是的,它默认执行此操作,甚至还有一个监视选项可以在更改时重新启动.

  • 根据我的经验,它没有做到这一点......我有一项服务,我必须每月重启一次,因为它一直在崩溃...... (4认同)
  • @Gor您没有设置监视选项.崩溃后重启没有任何选项,对不起,如果不够清楚. (3认同)
  • 我以 pm2 启动的节点进程崩溃了,但没有重新启动。也许我配置错了。我在崩溃后找不到与此默认重启相关的文档,您能指出它在哪里吗? (3认同)
  • @jgillich什么可能导致这种情况发生呢? (2认同)
  • @ 7hibault当你的应用程序保持低于'min_uptime`(默认为1秒),直到超过`max_restarts`(默认为15)时,它将停止重启.所以这里最可能的解释是你的应用程序因某种原因不断崩溃.每当它停留的时间超过`min_uptime`时,'max_restarts`就会重置,所以默认值应该可以正常工作. (2认同)

xoi*_*oid 8

另外,检查新的优秀选项

--exp-backoff-restart-delay=100 (msec, not sec!)
Run Code Online (Sandbox Code Playgroud)

pm2 将在 100 毫秒后重启崩溃的应用程序,然后逐步将重启延迟增加到 15 秒


ill*_*ter 6

要在应用程序崩溃时重新启动,您必须使用 PM2 重启策略之一。

有一种叫做指数退避重启延迟的东西,PM2 解释为:

当异常发生(例如数据库关闭)时,不是像疯狂地重新启动您的应用程序,指数退避重新启动将增加重新启动之间的时间。

您可以通过 CLI 设置它

pm2 start app.js --exp-backoff-restart-delay=100
Run Code Online (Sandbox Code Playgroud)

还有其他重启方法,这里提到。


All*_*ell 5

这可能会有所帮助:

# Generate Startup Script
$ pm2 startup

# Freeze your process list across server restart
$ pm2 save

# Remove Startup Script
$ pm2 unstartup
Run Code Online (Sandbox Code Playgroud)

更多详情请点击此处