Кластерный режим PM2. Выполнение в одном процессе блокирует событие l oop и в других процессах. - PullRequest
0 голосов
/ 25 апреля 2020

Я использую PM2 в режиме кластера и у меня запущено 2 экземпляра моего node.js приложения. У меня есть несколько долго выполняющихся заданий cron (около 30 секунд), которые я пытаюсь запустить. Я помещаю оператор if перед выполнением заданий cron, чтобы гарантировать, что они запускаются только в первом процессе через

if (process.env.NODE_APP_INSTANCE === 0) {
    myCronFunction()
}

Цель состояла в том, чтобы, поскольку есть два процесса, и PM2 должен был балансировать их нагрузку , если задание cron выполняется в процессе один, тогда процесс два все еще будет доступен для ответа на запрос. Я не уверен, что происходит, если PM2 не может успешно распределить нагрузку или что. Но когда мое задание cron выполняется в экземпляре 1, экземпляр 2 по-прежнему не отвечает на запросы, пока не завершится выполнение задания в экземпляре 1.

Я не уверен, почему это так. Насколько я понимаю, они должны быть полностью независимы друг от друга.

У кого-нибудь есть идеи?

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