【问题标题】:How do I limit the number of auto-restarts on pm2?如何限制 pm2 上的自动重启次数?
【发布时间】:2017-05-30 20:09:06
【问题描述】:

我有一个在 pm2 上运行的节点服务器,它依赖于一些外部服务。

当这些服务器出现故障时,我 pm2 开始重新启动我的应用程序,但这会一直持续到它阻塞我的 cpu 和服务器上的内存,每分钟重新启动多达 50 次。

有没有办法限制 pm2 的重启次数?当服务器达到一定的 RAM 内存级别时,有一种方法可以重新启动服务器,所以我希望我要求的这个功能存在。

【问题讨论】:

  • “当服务器达到一定的 RAM 内存级别时重新启动服务器”这将是处理内存泄漏的一种非常非常糟糕的方法......不知道你为什么要这样做。

标签: node.js pm2


【解决方案1】:

您可以使用max_restartsmin_uptime的组合来限制应用程序连续重启。

在您的应用被视为错误并停止重新启动之前,连续不稳定重新启动的次数(小于 1 秒的间隔或通过 min_uptime 自定义时间)

有关max_restartsmin_uptime 的更多信息,请访问here

【讨论】:

    【解决方案2】:

    像这样使用 PM2 生态系统.config.js 文件:

    module.exports = {
      apps : [{
        name: "app",
        script: "./app.js",
        merge_logs: true,
        max_restarts": 50, //Here you can define your max restarts
        instances: "max",
        max_memory_restart: "200M",
        env: {
          NODE_ENV: "development",
        },
        env_production: {
          NODE_ENV: "production",
        }
      }]
    }
    

    通过以下命令启动您的服务器:

    pm2 start ecosystem.config.js //uses variables from `env`
    pm2 start ecosystem.config.js --env production //uses variables from `env_production`
    

    更多详情见以下链接:

    PM2 Runtime | Guide | Ecosystem File

    【讨论】:

      【解决方案3】:

      如果您有配置文件的选项:ecosystem.config.js

      {
          watch_delay: 5000,
      
          exp_backoff_restart_delay: 100,
      
          restart_delay: 1000,
          max_restarts: 2,
          min_uptime: 5000,
          autorestart: false,
      }
      

      否则,给出相同的命令行,如下所示:

      pm2 start app.js --restart-delay=3000
      pm2 start app.js --no-autorestart
      

      他们自己知道这个问题,所以请参阅下面的第一个链接:

      我的只有在watch_delay: 5000, 之后才得到修复,不需要其他任何东西。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-13
        • 2021-09-14
        • 1970-01-01
        • 2021-09-17
        • 2021-06-24
        • 2016-04-21
        相关资源
        最近更新 更多