У меня проблемы с перезагрузкой приложения с использованием файла 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, но я все еще исследую это.