Nodejs PM2 v3.0+ 版本后,cron_restart 参数不起作用,或与预期不符
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 之类的也没有解决。请问下是配置哪里没写对吗?
用 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 * * *' // 每天午夜重启
}
]
};
如果上述方法仍然不起作用,你可以考虑以下几个步骤:
- 查看PM2的日志:使用
pm2 logs
查看是否有任何错误或警告信息。 - 尝试手动重启:使用
pm2 restart my-app
来验证重启功能是否正常。 - 查阅最新的PM2文档:因为软件不断更新,文档中的信息可能是最新的。
如果问题依然存在,建议在PM2的GitHub仓库中查找相关issue或提交一个新的issue。