pm2 перезагрузить ecosystem.config.js, вызывая много перезапусков приложения - PullRequest
0 голосов
/ 23 ноября 2018

У меня проблемы с перезагрузкой приложения с использованием файла ecosystem.config.js.Когда приложение запускается в первый раз, оно запускается правильно, но когда я обновляю / перезагружаю приложение с помощью файла ecosystem.config.js, приложение перезапускается несколько раз, вызывая ошибку.

Мой SO - UbuntuВерсия Xenial PM2 - 3.2.2 и Node v10.13.0.Приложение использует последнюю версию из модуля Express (4.16.4).Если я перезагружаю приложение с помощью «pm2 reload app_name», эта проблема не возникает.

Содержимое ecosystem.config.js:

module.exports = {
  apps: [{
     script: "./index.js",
     instances: "max",
     exec_mode: "cluster",
     kill_timeout: "2000",
     env: {
       NODE_ENV: "development",
     },
     env_production: {
       NODE_ENV: "production",
     }
  }]
}

При первом запуске:

$ pm2 reload ecosystem.config.js

[PM2] [WARN] Индекс приложений не запущен, запуск ...

[PM2] App [index]запущено (2 экземпляра)

node @ ubuntu: / data / $ pm2 logs

[TAILING] Хвост последние 15 строк для [всех] процессов (измените значение с помощью опции> - lines)

/ home / node / .pm2 / pm2.log последние 15 строк:

PM2 |2018-11-23T13: 14: 30: журнал PM2: приложение [индекс: 0] запускается в -cluster> mode-

PM2 |2018-11-23T13: 14: 31: Журнал PM2: приложение [индекс: 0] онлайн

PM2 |2018-11-23T13: 14: 31: журнал PM2: приложение [index: 1] запускается в -cluster> mode-

PM2 |2018-11-23T13: 14: 31: журнал PM2: приложение [index: 1] онлайн

Когда я перезагружаю приложение по имени (например, pm2 reload app_name), приложение продолжает работать, ноЯ вижу некоторые тайм-ауты для завершения процесса:

PM2 |2018-11-23T14: 01: 02: PM2 log: pid = 11296 msg = не удалось убить - повторная попытка через 100 мс PM2 |2018-11-23T14: 01: 02: Журнал PM2: процесс с pid 11289, все еще живым после 6000 мс, отправляя его SIGKILL сейчас ... PM2 |2018-11-23T14: 01: 02: PM2 log: pid = 11296 msg = не удалось убить - повторная попытка через 100 мс PM2 |2018-11-23T14: 01: 02: Журнал PM2: процесс с pid 11296, все еще живым после 6000 мс, отправляя его SIGKILL сейчас ... PM2 |2018-11-23T14: 01: 02: журнал PM2: имя приложения: идентификатор индекса: _old_0 отключен PM2 |2018-11-23T14: 01: 02: журнал PM2: приложение [index: _old_0] закрыто с кодом [0] через сигнал [SIGKILL] PM2 |2018-11-23T14: 01: 02: журнал PM2: имя приложения: идентификатор индекса: _old_1 отключен PM2 |2018-11-23T14: 01: 02: журнал PM2: приложение [index: _old_1] вышло с кодом [0] через сигнал [SIGKILL] PM2 |2018-11-23T14: 01: 02: PM2 log: pid = 11289 msg = процесс завершен PM2 |2018-11-23T14: 01: 02: PM2 log: pid = 11296 msg = процесс завершен

Но, несмотря на тайм-ауты, приложение работает.

При выполнении "экосистема перезагрузки pm2.config.js ", PM2 перезапускает приложение несколько раз, и один экземпляр выходит из строя:

0 | index |в Module.load (внутренняя / modules / cjs / loader.js: 598: 32)

0 | index |в tryModuleLoad (внутренний / modules / cjs / loader.js: 537: 12)

0 | index |в Function.Module._load (внутренний / modules / cjs / loader.js: 529: 3)

0 | index |на объекте.(/usr/lib/node_modules/pm2/lib/ProcessContainerFork.js:48:21)

0 | index |Ошибка: прослушайте EADDRINUSE ::: 3001

Я полагаю, что проблема связана с некоторым тайм-аутом для правильного завершения http-соединения модуля Express, но я все еще исследую это.

1 Ответ

0 голосов
/ 13 декабря 2018

Это было исправлено в последней версии PM2, пожалуйста, обновите:

npm install pm2 @ последнее обновление -g pm2

Убедитесь, что вы pm2 delete all, а затем снова запустите приложениебудет работать при перезагрузке или перезапуске

...