Я использую PM2 в режиме кластера и у меня запущено 2 экземпляра моего node.js приложения. У меня есть несколько долго выполняющихся заданий cron (около 30 секунд), которые я пытаюсь запустить. Я помещаю оператор if перед выполнением заданий cron, чтобы гарантировать, что они запускаются только в первом процессе через
if (process.env.NODE_APP_INSTANCE === 0) {
myCronFunction()
}
Цель состояла в том, чтобы, поскольку есть два процесса, и PM2 должен был балансировать их нагрузку , если задание cron выполняется в процессе один, тогда процесс два все еще будет доступен для ответа на запрос. Я не уверен, что происходит, если PM2 не может успешно распределить нагрузку или что. Но когда мое задание cron выполняется в экземпляре 1, экземпляр 2 по-прежнему не отвечает на запросы, пока не завершится выполнение задания в экземпляре 1.
Я не уверен, почему это так. Насколько я понимаю, они должны быть полностью независимы друг от друга.
У кого-нибудь есть идеи?