pm2 - max-restarts limit не работает и непрерывная перезагрузка системы сбоя

Я попробовал 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 регулярно срабатывает, он разбил хост-систему и использование памяти с 300 до 800 мб.

Его нормальное состояние при запуске приложения.

enter image description here

При сбое приложения. Тогда график идет очень высоко.

Мне нужно остановить максимум перезагрузки, чтобы избежать сбоя хоста из-за высокого использования памяти. Я не хочу ограничивать использование памяти. enter image description here

Ответ 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-го перезапуска), тогда он не будет работать, Он запустит перезапуск приложения.

PM2 доквалификация

PS

min_uptime может быть задано в строке.

enter image description here