Ответ вслух Senior Деплой и эксплуатация обновлено

Сервис тормозит после релиза

Вопрос

После релиза латентность p99 выросла в 5 раз, а ошибок нет. Ваши действия?

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

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

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

Коротко

Образцовый ответ: «Если рост совпал с релизом по времени, первым делом стабилизирую: откатываю версию или выключаю новую функциональность флагом, а разбираюсь уже спокойно. Дальше смотрю метрики по эндпоинтам: какие замедлились, в какой момент, связано ли с нагрузкой.

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

  • Сначала стабилизировать: откат или фича-флаг, если связь с релизом очевидна

  • Метрики: какие эндпоинты, когда началось, корреляция с деплоем и нагрузкой

  • Трейсы: где время, БД, внешние вызовы, блокировки

  • Ресурсы: воркеры заняты, очереди соединений, пул БД, CPU, память

  • Типичные причины: N+1, новый запрос без индекса, блокирующий вызов в async

  • Постмортем и защита: тест на число запросов, нагрузочный тест

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

  • Как понять, что проблема в базе, а не в приложении?
  • Почему p99 важнее среднего?

Разбор

Образцовый ответ: «Если рост совпал с релизом по времени, первым делом стабилизирую: откатываю версию или выключаю новую функциональность флагом, а разбираюсь уже спокойно. Дальше смотрю метрики по эндпоинтам: какие замедлились, в какой момент, связано ли с нагрузкой. Трейсы показывают, куда уходит время: если это SQL, ищу новые запросы, N+1, отсутствие индекса, смотрю pg_stat_statements и EXPLAIN ANALYZE; если внешний вызов, проверяю таймауты и ретраи. Смотрю насыщение: все ли воркеры заняты, не кончился ли пул соединений, нет ли очереди на nginx. В async-сервисе отдельно проверяю, не появился ли блокирующий вызов, это даёт рост задержки у всех запросов сразу. Средняя латентность может почти не измениться, а p99 это то, что видят самые несчастные пользователи и что умножается в цепочках вызовов. После исправления пишу постмортем и добавляю защиту: тест на число запросов, нагрузочный прогон в CI или канареечный релиз».

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

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