Nodejs PM2 v3.0+ 版本后,cron_restart 参数不起作用,或与预期不符

发布于 1周前 作者 ionicwang 来自 nodejs/Nestjs

Nodejs PM2 v3.0+ 版本后,cron_restart 参数不起作用,或与预期不符

生成一个 ecosystem.config.js 文件,内容如下:

module.exports = {
    apps : [{
        name: "API",
        script: "server.js",
        exec_mode: "cluster", // 设置执行模式,值为:fork|cluster

        exec_interpreter: "node",
        // 定时重启,仅在 cluster 模式有效, [minute] [hour] [day] [month] [day of week]
        cron_restart: "*/1 * * * *", // 每分钟重启(测试)

        instances: 1, // 负数代表服务器 cup 核心数

        autorestart: true, // 进程失败后启用或禁用自重启

        watch: false, // 文件有改变则重启,用于调试

        max_memory_restart: "500M", // 如果超出内存量,重新启动应用

        log_date_format: "YYYY-MM-DD HH:mm Z",
        log_file: "logs/api.log",
        error_file: "logs/api-err.log",
        out_file: "logs/api-out.log",

        env: { // 默认环境
            "INTERVAL": 6000,
            "NODE_ENV": "production",
            "DEBUG": "express"
        }
    }]
};

在 pm2 的 v2.x 版本上用得是挺顺利的,结果现在 v3.x 版本无法使用,查找了 SO 之类的也没有解决。请问下是配置哪里没写对吗?


5 回复

用 yml 配置吧. v2 后面的版本 json js 格式配置都不太兼容.特别是加环境变量


试了,是一样的,js、json、yml 格式都是一样的表现,3.5.1 版本就根本不生效。3.2.2 之前版本是可以用的

确实这样,新版本 cron 不起作用

autorestart: true >> false

在Node.js中,PM2是一个非常流行的进程管理工具,它允许你轻松地管理、监控和重启你的Node.js应用程序。关于你提到的cron_restart参数在PM2 v3.0+版本后不起作用或与预期不符的问题,这里有几个可能的解决方案和排查步骤。

首先,需要确认你使用的PM2版本确实支持cron_restart参数。虽然这个参数在早期的PM2版本中用于基于cron表达式的定时重启,但在后续的版本中,其实现和配置方式可能有所变化。

你可以通过以下方式检查PM2的版本并尝试查看相关文档:

pm2 --version

对于定时任务,PM2推荐的做法是使用生态系统配置文件(ecosystem.config.js)中的cron_restart字段,但请确保你的语法正确。例如:

module.exports = {
  apps: [
    {
      name: 'my-app',
      script: './app.js',
      cron_restart: '0 0 * * *' // 每天午夜重启
    }
  ]
};

如果上述方法仍然不起作用,你可以考虑以下几个步骤:

  1. 查看PM2的日志:使用pm2 logs查看是否有任何错误或警告信息。
  2. 尝试手动重启:使用pm2 restart my-app来验证重启功能是否正常。
  3. 查阅最新的PM2文档:因为软件不断更新,文档中的信息可能是最新的。

如果问题依然存在,建议在PM2的GitHub仓库中查找相关issue或提交一个新的issue。

回到顶部