我正在使用pm2来定义需要定期运行的各种作业。这是一个例子:
{
"name": "recalc-score",
"script": "dist/jobs/recalc-score.js",
"cron_restart": "5 0 * * *",
"env": {
"NODE_ENV": "production"
}
},
任务在不到一秒的时间内完成,但如果我调用ps aux
或pm2 monit
,我会看到pm2正在为每个任务保持一个进程。每个消耗40 + MB的RAM。
有没有办法避免这种行为?我真的很喜欢通过更新ecosystem.json
来轻松地在服务器上创建新的工作,所以我真的想坚持使用pm2,但是为每天运行一次的任务牺牲大量的RAM感觉并不理想。
好吧,这似乎有点受到这个问题的阻碍:https://github.com/Unitech/pm2/issues/2487
但这里的解决方案效果很好。我创建了一个运行worker.js
的单个node-schedule脚本。在这里,我定义了所有cron任务。这只需要一个过程。