Ответ вслух Senior Кластер, воркеры, масштабирование обновлено

Нагрузка выросла в 10 раз: что делаешь

Вопрос

Нагрузка на Node-сервис выросла в 10 раз, ответы стали медленными. Как будешь действовать?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Первым делом измеряю, а не добавляю серверы вслепую. Смотрю задержку по маршрутам, задержку event loop через monitorEventLoopDelay, загрузку CPU и памяти, время запросов к базе и внешним сервисам.

Что должно прозвучать в ответе

  • Сначала измерить: метрики задержки, event loop lag, CPU, память, узкое место (БД, внешний API, CPU)

  • Если CPU и блокировки цикла: профилирование (--cpu-prof, clinic), вынос тяжёлого в воркеры

  • Сделать сервис stateless и масштабировать репликами

  • База часто узкое место: индексы, пул соединений, реплики на чтение, кеш

  • Кеш и очереди для тяжёлых и необязательных операций

  • Нагрузочное тестирование (k6, autocannon) до и после

Что могут спросить следом

  • Как измерить задержку event loop?
  • Что делать, если упёрлись в лимит соединений к PostgreSQL?

Разбор

Первым делом измеряю, а не добавляю серверы вслепую. Смотрю задержку по маршрутам, задержку event loop через monitorEventLoopDelay, загрузку CPU и памяти, время запросов к базе и внешним сервисам. Нужно понять, где узкое место.

Если процесс упирается в CPU или цикл блокируется, снимаю профиль через --cpu-prof и ищу горячие функции: часто это синхронный JSON на больших объектах или тяжёлые регулярки. Вычисления выношу в воркеры.

Если сервис stateless, добавляю реплики за балансировщиком. Тогда обычно следующим узким местом становится база: проверяю медленные запросы и индексы, ставлю PgBouncer, если не хватает соединений, читаю с реплик, кеширую горячие данные в Redis.

Всё, что не нужно делать в ответе пользователю, например письма и отчёты, увожу в очередь. И проверяю результат нагрузочным тестом через k6 или autocannon, сравнивая с исходными цифрами.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме