Как PM2 удается запустить несколько процессов, прослушивающих один и тот же порт? - PullRequest
0 голосов
/ 11 июня 2019

Интересно, как pm2 позволяет моему коду экспресс-запуска работать без изменений в параллельных процессах. Когда я пытаюсь вручную запустить другой экземпляр моего экспресс-приложения, слушая, например, порт 3000, я всегда получаю сообщение об ошибке, порт уже используется.

Изменяет ли pm2 код js, который запускается для вставки некоторых твиков в середину, или он эмулирует какую-то виртуальную машину, а затем выставляет миру только один порт процесса pm2? Что происходит за кулисами?

1 Ответ

0 голосов
/ 11 июня 2019

PM2 не позволит вам снова запустить тот же скрипт на порту. Если вы используете опцию pm2 start app.js -f для принудительного запуска сценария снова, pm2 будет неоднократно пытаться запустить сценарий, но будет происходить сбой каждый раз, так как этот порт уже используется. pm2 ls может показывать, что запущены два процесса, но на самом деле второй не работает непрерывно, и вы можете подтвердить это, выполнив команду pm2 logs.

Если вы говорите о режиме кластера pm2, то в этом случае pm2 просто балансирует нагрузку между несколькими дочерними процессами, используя кластерный модуль NodeJS внутри.

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