Мне было интересно, есть ли хорошая практика, как использовать долгосрочные запросы в nodejs? Я использую Express. js и мне было интересно, есть ли какой-нибудь способ, я не знаю, переместить один из express запросов в другой экземпляр узла или что-то еще?
Причина, по которой меня интересует, заключается в том, что если сильно использовать процессор, блокируя в то же время событие l oop в узле. Основная проблема заключается в том, что сначала я выбираю некоторые данные, затем вычисляю и вставляю недостающие данные в БД, затем извлекаю другие данные в зависимости от результата, а затем снова вычисляю и обновляю другие данные в БД.
У меня есть не заметил этой проблемы, так как пока я был единственным, кто использовал этот запрос. Но сейчас я тестирую его с другими пользователями, и если немногие из них используют этот запрос, все приложение останавливается на несколько секунд. И на моих инструментах мониторинга я вижу огромное использование процессора (100% -200% lol)
Так что я пробовал кластеризацию, но, похоже, она не работает. Я использовал pm2 и запустил приложение на всех ядрах моего процессора. Из-за сложности моего алгоритма я пытался переместить несколько функций в рабочие потоки, но похоже, что эти потоки будут использоваться очень и очень часто, и я боюсь сбить весь экземпляр узла.
Я понятия не имею, какое решение было бы лучшим, и не знаю, есть ли какие-нибудь хорошие инструменты для Express, которые помогли бы мне разгрузить / использовать эти запросы? Я еще не погрузился в разделение, но, похоже, это может сработать. Кто-нибудь использовал это для более крупных проектов и знает, может ли это быть решением для распределения одного запроса на несколько тиков?
А как насчет очереди заданий, как Bull или Kue? Было бы хорошей идеей поместить эти задачи в очередь? Я никогда не использовал такие инструменты, и я спрашиваю, поскольку я понятия не имею, имеет ли это смысл.
Приветствия