теория

Хвост, который виляет пользователем

Смотри, вот первое, что стоит принять как данность: время ответа — не одно число, а целое распределение. Запусти один и тот же запрос дважды подряд — цифры будут разные. То пакет потерялся, то сборщик мусора замер на миг (программа-уборщик памяти; пока она убирает, всё на мгновение замирает), то запрос просто постоял в очереди к процессору. Живая система дышит, и это нормально.

Поэтому честно описывать её :

  • — половина запросов быстрее этого значения. Тот самый «типичный» пользователь.
  • p95 / / p99.9: опыт худших 5%, 1% и 0,1% запросов.

А теперь то, что многих удивляет: этот хвост важнее, чем кажется по его доле. Вот почему:

  • Хвост достаётся лучшим клиентам. Amazon следит за внутренними сервисами по p99.9 не из перфекционизма: самые медленные запросы обычно у аккаунтов с самой длинной историей покупок — то есть у самых ценных клиентов.
  • . Если страница собирается из нескольких внутренних вызовов, её скорость равна скорости самого медленного из них. Чем больше вызовов — тем чаще пользователь ловит чей-то p99. Через шаг посчитаем это руками — цифра тебя удивит.
  • Очереди врут. Сервер тянет ограниченное число запросов разом; один медленный задерживает всех, кто встал за ним. Эта очередь живёт вне сервера — вот почему мерить надо на стороне клиента, а не по серверным логам.

Из перцентилей собирается SLO — обещание вида «p50 < 200 мс, p99 < 1 с, 99,9% успешных». А — тот же SLO, но уже как контракт, за нарушение которого платят живыми деньгами.

И два предостережения, о которые все спотыкаются. Первое: перцентили нельзя усреднять — среднее из p99 десяти серверов прячет худший из них; складывай гистограммы, а не средние. Второе: перегруженная система порой не восстанавливается сама — повторные запросы клиентов только подливают масла (). Поэтому рядом с SLO всегда живут , и . Познакомимся с ними ближе в третьем акте — пока просто запомни, что они есть.

← назад