PM2 --max-memory-restart: EADDRINUSE: адрес уже используется - PullRequest
0 голосов
/ 26 января 2019

У меня есть приложение node.js, работающее на нескольких системах за балансировщиком нагрузки nginx. В дневные и пиковые часы эти узлы начинают потреблять больше памяти и процессоров и изящно перезагружаются, когда достигают порога 640 МБ памяти. Перезапуски управляются сценарием PM2 json и max-memory-restart.

Проблема теперь в том, что иногда, не всегда, после перезапуска новый процесс не может быть запущен, потому что порт все еще используется. Это происходит случайным образом на всех узлах.

Ошибка:

Ошибка: прослушайте EADDRINUSE: адрес уже используется ::: 8888
at Server.setupListenHandle [как _listen2] (net.js: 1255: 14)
в listenInCluster (net.js: 1303: 12) на Server.listen (net.js: 1391: 7)
...

Сценарий server.json:

{
  "name"   : "server.json",
  "script" : "server.js",
  "max_memory_restart" : "640M",
  "log_date_format" : "YYYY-MM-DD HH:mm Z"
}

Что может быть не так? Примечание: я не могу запустить server.json в режиме кластера, потому что у меня только один процессор на систему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...