【发布时间】:2014-11-25 22:33:20
【问题描述】:
我有一个可用的 Node.js 应用程序,但存在导致应用程序崩溃的已知和未知错误。在这种情况下,如果pm2 可以重新启动节点应用程序会很好。 pm2 中是否已提供此功能?
【问题讨论】:
我有一个可用的 Node.js 应用程序,但存在导致应用程序崩溃的已知和未知错误。在这种情况下,如果pm2 可以重新启动节点应用程序会很好。 pm2 中是否已提供此功能?
【问题讨论】:
是的,默认情况下它会这样做,甚至还有一个 watch option 可以在更改时重新启动。
【讨论】:
min_uptime(默认1s)直到超过max_restarts(默认15),它将停止重启。所以这里最可能的解释是你的应用由于某种原因不断地崩溃。只要它停留的时间超过min_uptime,max_restarts 就会被重置,因此默认值应该可以正常工作。
另外,请检查这个新的优秀选项:
--exp-backoff-restart-delay=100
pm2 会在 100 毫秒(0.1 秒)后重启崩溃的应用,然后逐步将重启延迟增加到 15 秒。
【讨论】:
这可能会有所帮助:
# Generate Startup Script
$ pm2 startup
# Freeze your process list across server restart
$ pm2 save
# Remove Startup Script
$ pm2 unstartup
更多详情here
【讨论】:
要让应用在崩溃时重启,您必须使用 PM2 的重启策略之一。
有一种叫做“指数退避重启延迟”的东西,PM2 解释为:
当发生异常(例如数据库关闭)时,不会像疯了一样重新启动您的应用程序,而是指数退避重新启动将增加重新启动之间的时间。
您可以像这样使用 CLI 进行设置:
pm2 start app.js --exp-backoff-restart-delay=100
还有其他的重启方法,提到here。
【讨论】: