我尝试使用pm2来限制--max-restarts
的重新启动限制,但它不起作用且累了min_uptime
sudo pm2 start server.js --max-restarts=5
我还尝试使用yml
文件
apps:
- name: node-mt
script: server-socket.js
watch: true
max_restarts: 5
min_uptime: 5000
但它并不限制应用程序的重启。
如果pm2经常崩溃,它会导致主机系统崩溃,内存使用量从300mb到800mb。
应用程序运行时的正常状态。
当应用程序崩溃时然后图表非常高。
答案 0 :(得分:6)
PM2 max_restarts
ane min_uptime
完美无缺。你需要理解两者的类比。
根据文件
连续不稳定重启的次数(小于1秒(默认) 在考虑您的应用之前,通过min_uptime的间隔或自定义时间 错误并停止重新启动
这意味着如果您的min_uptime为5000且max_restarts为5,那么如果应用程序崩溃并在不到5000毫秒内重启5次,您的应用程序将被视为错误。如果它在5秒内重新启动4次,则不会将其视为错误并继续重新启动它。
如果您的应用继续使用此配置重启,则意味着您的应用未在5秒内重启5次。可能的解决方案是在min_uptime中为您的情况提供相对较高的数字,例如一小时左右,或者您可以通过手动测试找到它。
当我第一次使用我的节点cron应用程序遇到它并创建以下演示时,我很高兴理解这一点。
<强> app.js 强>
setTimeout(function () {
console.log('killed');
process.exit(1)
}, 100);
<强> ecosystem.config.json 强>
{
"apps" : [{
"name" : "api",
"script" : "./app.js",
"max_restarts" : 3,
"min_uptime" : 300
}]
}
这会杀死你的进程但是如果你把超时改为130+(我不知道为什么但是它适用于小于130的值,因为可能是ms pricision而不考虑配置直到第一次重启)然后它赢了'工作。它将开始重新启动应用程序。
P.S。
min_uptime
也可以用字符串给出。