Вопрос с собеседования · System design

Что верно про измерение времени ответа сервиса?

MiddleНаблюдаемость и SLO
Ещё спрашивают так:
  • Как правильно измерять время ответа?
  • Можно ли усреднять p99 между серверами?
Коротко

Смотрим перцентили (p50, p95, p99), а не среднее; перцентили не усредняются — считаем из гистограмм; успешные и ошибочные запросы — раздельно.

  • Быстрые 500-е маскируют аварию в общей задержке
  • Хвост усиливается в цепочках и при fan-out
  • Мерить и на клиенте: сервер не видит очередь перед собой и сеть

А ещё Между медианой и p99 нет универсального соотношения

Подробно

Почему не среднее. Распределение задержек скошено: большинство запросов быстрые, хвост длинный. Среднее его прячет; p50 показывает типичный опыт, p95/p99 — то, что видят невезучие и на что жалуются.

Почему перцентили не усредняются. p99 каждого из десяти подов ничего не говорит о p99 их суммы. Правильно — собирать гистограммы (счётчики по бакетам задержки), складывать их и вычислять перцентиль по сумме: histogram_quantile(0.99, sum by (le) (rate(...))).

Раздельно по статусу. Ошибка часто возвращается быстро (сразу 500 или отказ circuit breaker). Если смешать, при аварии задержка даже «улучшится». Задержку считают для успешных, а долю ошибок — отдельно.

Где мерить: сервер видит время обработки, но не очередь в балансировщике, не сеть, не повторы клиента. Важны метрики на стороне клиента или балансировщика.

Хвосты в цепочках: ответ агрегатора ждёт самый медленный из N вызовов, поэтому его p99 определяется p99.9 зависимостей.

Нагрузочные тесты: генератор с фиксированной скоростью, иначе coordinated omission занижает хвост.

Что хотят услышать

  • Перцентили вместо среднего и почему.
  • Гистограммы для агрегации, запрет усреднения перцентилей.
  • Раздельный учёт по статусу ответа.
  • Хвост в цепочках, измерение на клиенте — плюс.

Частые ошибки

  • Усреднять p99 разных серверов.
  • Смешивать задержку ошибок и успешных ответов.

Проверьте себя

Несколько верных вариантов. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✗p99 можно получить, умножив медиану на 2: распределение задержек почти всегда нормальное
  • ✓Среднее прячет хвост: при среднем 50 мс сотый пользователь может ждать секунды
  • ✓Перцентили не усредняют по инстансам — складывают гистограммы
  • ✓Задержки успешных и ошибочных запросов считают раздельно

Что спросят дальше

  • Почему в микросервисной цепочке хвост усиливается?
  • Как связаны гистограммы и вычисление перцентилей?

Разбор темы

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования