Ответ 1
PM2 max_restarts
ane min_uptime
отлично работает. Вам нужно понять аналогию с обоими.
Согласно документации
количество последовательных неустойчивых перезапусков (менее 1 с (по умолчанию) или пользовательское время через min_uptime), прежде чем ваше приложение будет считаться ошибочным и перестанет перезапускаться
Это означает, что если ваш min_uptime равен 5000, а max_restarts - 5, ваше приложение будет считаться ошибочным, если приложение разбилось и перезапустилось 5 раз менее чем за 5000 мс. Если он перезапускается 4 раза за 5 секунд, он не будет считать это ошибкой и продолжит его перезапуск.
Если ваше приложение продолжает перезагружать эту конфигурацию, это означает, что ваше приложение не перезапускает 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 и не рассматривает конфигурацию до 1-го перезапуска), тогда он не будет работать, Он запустит перезапуск приложения.
PS
min_uptime
может быть задано в строке.