【问题标题】:Can the pm2 node module restarts the app after crash automaticallypm2节点模块能否在crash后自动重​​启app
【发布时间】:2014-11-25 22:33:20
【问题描述】:

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

【问题讨论】:

    标签: node.js pm2


    【解决方案1】:

    是的,默认情况下它会这样做,甚至还有一个 watch option 可以在更改时重新启动。

    【讨论】:

    • @Gor 你没有设置监视选项。崩溃后重新启动没有任何选项,如果不够清楚,抱歉。
    • 根据我的经验,它不会这样做……我有一个服务,我必须每月重新启动一次,因为它一直在崩溃……
    • 我遇到了一个以 pm2 启动的节点进程崩溃,该进程没有重新启动。也许我配置错了。我找不到与崩溃后默认重启相关的文档,请您指出它在哪里?
    • @jgillich 什么会导致这种情况不会发生?
    • @7hibault 当你的应用停留时间少于min_uptime(默认1s)直到超过max_restarts(默认15),它将停止重启。所以这里最可能的解释是你的应用由于某种原因不断地崩溃。只要它停留的时间超过min_uptimemax_restarts 就会被重置,因此默认值应该可以正常工作。
    【解决方案2】:

    另外,请检查这个新的优秀选项:

    --exp-backoff-restart-delay=100
    

    pm2 会在 100 毫秒(0.1 秒)后重启崩溃的应用,然后逐步将重启延迟增加到 15 秒。

    【讨论】:

      【解决方案3】:

      这可能会有所帮助:

      # Generate Startup Script
      $ pm2 startup
      
      # Freeze your process list across server restart
      $ pm2 save
      
      # Remove Startup Script
      $ pm2 unstartup
      

      更多详情here

      【讨论】:

        【解决方案4】:

        要让应用在崩溃时重启,您必须使用 PM2 的重启策略之一。

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

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

        您可以像这样使用 CLI 进行设置:

        pm2 start app.js --exp-backoff-restart-delay=100
        

        还有其他的重启方法,提到here

        【讨论】:

          猜你喜欢
          • 2019-07-18
          • 1970-01-01
          • 2021-09-10
          • 2020-06-26
          • 1970-01-01
          • 2015-12-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多