Экспресс: какую нагрузку может обрабатывать продолжение-локальное хранилище?

Я хочу включить потоковое хранилище для моего экспресс-приложения, которое обрабатывает от 100 до 300 вызовов API в минуту. Я играл с продолжением-локальным хранилищем (и перехватывал cls, так как я на узле 8.9.0), но пики процессора очень высоки (нормальное и в 500 раз больше уровня) и привели к сбою сервера. Конечные точки в основном выполняют легкие синхронные вычисления ЦП (например, вызывают API, выполняют поиск, редко выполняют интенсивные задачи ввода-вывода)

У кого-нибудь есть опыт запуска csl в масштабе с Express?

0 ответов

Недавно я играл с cls-rtracer, моей маленькой библиотекой для Express и Koa. Эта библиотека представляет собой просто набор облегченных промежуточных программ, созданных поверх cls-hooked. Таким образом, в основном я тестировал следы cls-hooked (и Async Hooks API, так как я использовал версию 8 Node.js).

Я реализовал очень простое приложение Express и протестировал его на своем компьютере с CLS и без него. Сценарий с CLS был следующим:

  • При каждом запросе идентификатор генерировался с помощью uuid/v4 и затем сохранялся в CLS. Это было сделано промежуточным ПО cls-rtracer.
  • В промежуточном программном обеспечении маршрута было выполнено некоторое ведение журналов с помощью winston, библиотеки логгеров. Библиотека была настроена на получение идентификатора запроса от CLS и добавление его для каждой записи журнала.

Нагрузка была сгенерирована утилитой ab. Я использовал Windows 10 и Node.js 10, но также тестировал на виртуальной машине Ubuntu с Node.js 8 и получил аналогичные результаты.

В результате я получил снижение числа запросов в секунду на 10-15% при включенных идентификаторах запросов и CLS. Что касается использования ЦП, я не увидел какой-либо существенной разницы, как внезапные всплески, между этими двумя сценариями.

Я опубликовал свое тестовое приложение в виде гистограммы: https://gist.github.com/puzpuzpuz/3c2a36ca0835906ad50dbd22c72df974

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

Другие вопросы по тегам