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