NodeJS + Express медленно потребляет все больше и больше процессоров - PullRequest
0 голосов
/ 15 ноября 2018

У нас есть странная проблема, когда у нас есть конечная точка в NodeJS + Express, эта конечная точка вызывается один раз каждые x минут.И каждый раз, когда он вызывается, мы видим в наших журналах (в частности, сведения о приложениях в Azure), что загрузка ЦП несколько увеличивалась.

Со временем загрузка ЦП закончится на уровне 100% и перестанет отвечать на запросы..

Что я нахожу странным, так это то, что мы действительно не делаем ничего лишнего в этой конечной точке.

Мы выбираем много документов mongodb, перебираем их, выполняем некоторую обработку, сохраняя несколько назад,и это все.

Существуют ли какие-либо известные ловушки, из-за которых ЦП может протекать с использованием любого из вышеперечисленных инструментов / сред?

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

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

1 Ответ

0 голосов
/ 15 ноября 2018

Похоже, что работа не завершена до следующей работы?Я не могу сказать из вашего объяснения.

У меня есть пара предложений:

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

  1. Возможно, перейдите в пакетную систему (установите флажок в документах, запроситеесли он существует или ложь, и установите $ limit для результирующего набора, установите соответствующий флаг после обработки этого документа)
  2. Как выглядит ваша память?Можете ли вы использовать прогнозы для ограничения данных, обрабатываемых на сервере.
  3. Если вы обновляете только несколько документов, возможно, вам следует повторно посетить запрос.Я бы предпочел отфильтровать набор результатов с помощью запроса, а затем ввести пакет документов, не относящихся к фильтрации с помощью JS.
  4. Управление памятью в коде - открепить запросы, установить массивы на ноль, как только вы закончите с использованиемих и т. д.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...