Метрики: latency, throughput и «девятки» доступности
Нельзя улучшить то, что не измеряешь: разберём язык, на котором говорят о качестве систем.
Перцентиль p99 — значение, которое не превышено в 99% запросов. p99 латентности = 300 мс означает: 99% запросов быстрее 300 мс, а 1% — медленнее.
Latency и перцентили
Средняя задержка обманчива. Если 99 запросов по 10 мс и один по 5 секунд, среднее ≈ 60 мс выглядит прекрасно, но один пользователь ждал 5 секунд. Поэтому смотрят на перцентили, а не на среднее.
| Метрика | Смысл | Зачем |
| p50 (медиана) | половина запросов быстрее этого | типичный опыт пользователя |
| p95 / p99 | хвост распределения | опыт «неудачников», самых медленных запросов |
| p999 | самые редкие медленные | критично при огромном трафике |
Почему хвост важен: если страница делает 100 внутренних запросов, и каждый имеет p99 = 1%, то вероятность, что хотя бы один попадёт в медленный хвост, близка к 63%. Хвостовая латентность бьёт по системе сильнее, чем кажется.
Throughput
Throughput — сколько запросов система обрабатывает в секунду. Latency и throughput связаны, но это разные вещи: можно иметь низкую задержку и низкую пропускную способность (быстрый, но слабый сервер) и наоборот. Цель — высокий throughput при приемлемой latency.
Доступность и «девятки»
Доступность измеряют в процентах аптайма, которые называют «девятками». Каждая девятка на порядок сокращает допустимый простой.
| Доступность | Простой в год | Простой в сутки |
| 99% (две девятки) | ~3,65 дня | ~14 минут |
| 99,9% (три девятки) | ~8,8 часа | ~1,4 минуты |
| 99,99% (четыре девятки) | ~52 минуты | ~8,6 секунды |
| 99,999% (пять девяток) | ~5,3 минуты | ~0,9 секунды |
Каждая дополнительная девятка стоит дорого: резервирование, мультирегиональность, автоматический failover. Не обещайте пять девяток там, где бизнесу хватит трёх. Это прямой компромисс «надёжность против стоимости».
Доступность последовательных компонентов
Если запрос проходит через несколько компонентов подряд, их доступности перемножаются. Три сервиса по 99,9% дают:
0,999 * 0,999 * 0,999 ≈ 0,997 = 99,7%
Цепочка всегда менее надёжна, чем слабейшее звено. Поэтому для надёжности компоненты дублируют параллельно (резервирование), а не выстраивают в длинную цепь.
SLA, SLO, SLI
| SLI | Indicator — что измеряем (например, доля успешных ответов). |
| SLO | Objective — внутренняя цель (например, 99,95% успешных). |
| SLA | Agreement — обещание клиенту с санкциями за нарушение. |
Итог
- Смотрите на перцентили (p99), а не на среднее: хвост определяет реальный опыт.
- Каждая «девятка» сокращает допустимый простой в ~10 раз и резко повышает цену.
- Доступности последовательных компонентов перемножаются — цепочка слабее звена.