Процентиль (перцентиль) — это значение, ниже которого находится определенный процент всех наблюдений.
В IT процентили (например, 95 процентиль) используются для анализа производительности систем, мониторинга времени отклика и установки SLO. Это одна из ключевых метрик для обеспечения надежности IT-систем.
Простыми словами: если время отклика API составляет 100мс в 95-м процентиле, это означает, что 95% всех запросов выполняются быстрее 100мс, а оставшиеся 5% — медленнее.
Процентиль простыми словами для начинающих
Представь 100 школьников, выстроенных по росту от низкого к высокому: кто-то ростом 154 см, 160, 167, 170 ... 190. Так вот 95‑й процентиль — это рост того школьника, который выше 95% других школьников из 100.
Если ты в 90‑м процентиле по росту = Ты выше 90% людей и ниже только 10%
Как работают процентили в мониторинге IT‑систем
Основная концепция
Когда сервис обрабатывает множество запросов за единицу времени (например, секунду), простое среднее время отклика не покажет реальную картину. Будет по принципу "средняя температура по больнице 36.6, с учетом морга и реанимации".
Представь: 1000 запросов выполняются за 50мс, а один медленный запрос — за 10 секунд. Среднее время составит примерно 60мс, что выглядит нормально, но этот сбой не будет замечен.
Процентили решают эту проблему, показывая распределение производительности:
50-ый процентиль (медиана) — половина запросов быстрее этого значения
95-й процентиль — 95% запросов выполняются быстрее этого значения
99-й процентиль — 99% запросов выполняются быстрее этого значения
99.9-й процентиль — 99.9% запросов выполняются быстрее этого значения
Пример из реальной системы
Допустим, твой API обрабатывает запросы со следующими результатами за час:
- 90% запросов: 20-80мс
- 9% запросов: 100-200мс
- 1% запросов: 500мс-3сек
Метрики будут:
- Среднее время: ~120мс
- 50-й процентиль (медиана): 60мс
- 95-й процентиль: 180мс
- 99-й процентиль: 1.2сек
Среднее время скрывает проблемы с производительностью для части пользователей. Это может приводить к жалобам, а ты не сможешь "по приборам" увидеть проблемы.
Какие процентили использовать
Процентиль | Описание | Применение |
---|---|---|
50-й (медиана) | Типичная производительность | Базовый мониторинг, общая оценка |
90-й | Производительность для большинства | Проактивные алерты |
95-й | Производительность почти для всех | Стандартные SLO |
99-й | Исключает редкие аномалии | Критические SLO |
99.9-й | Максимальная производительность | Mission-critical системы |
Освой диагностику реальных инцидентов с Incidenta
Понимание процентилей критично для анализа деградаций производительности. Хочешь прокачаться и наработать «мышечную память»? Посмотри список тренировок на странице /scenario и начни с демо‑сценария /demo/scenario/100/.
Incidenta — тренажёр ИТ‑инцидентов для тех, кто релизит и кто чинит (DevOps/SRE/Back‑end). 50% компаний сталкиваются с инцидентами каждую неделю и теряют на них деньги. С тренажёром команды ускоряют диагностику и восстановление сервисов: за десятки симуляций ты проживаешь реальные сбои и перестаёшь паниковать от «ночных алертов».
Как работают перцентили вне IT — пример из Dota 2
Перцентили активно используются в игровых рейтингах. Не просто для отображения списка от самого лучшего до самого худшего, а для простого сравнения игроков между собой.
Как работают процентили в Дота 2 MMR
В Dota 2 каждый игрок имеет MMR (Matchmaking Rating) — числовой рейтинг, который определяет его скилл. Система ранжирования использует процентили для распределения игроков по рангам:
Ранг | MMR диапазон | Процентиль | Описание |
---|---|---|---|
Herald | 0-770 | 0-10% | Новички, изучающие основы |
Guardian | 770-1540 | 10-25% | Игроки с базовым пониманием |
Crusader | 1540-2310 | 25-40% | Ниже среднего уровня |
Archon | 2310-3080 | 40-60% | Средний уровень (медиана) |
Legend | 3080-3850 | 60-75% | Выше среднего |
Ancient | 3850-4620 | 75-90% | Опытные игроки |
Divine | 4620+ | 90-95% | Мастерски владеющие игрой |
Immortal | 6000+ | 95-99% | Топ-игроки мира |
Чтобы система была универсальной, диапозоны процентилей зафиксированы, а значения MMR считаются в каждом сезоне заново. Поменялся баланс игры, поменялось количество игроков — и ты можешь вылетить из одного ранга и попасть в другой.
Допустим, у тебя MMR = 3200. Это означает:
- Ты находишься в 65-м процентиле
- Ты лучше 65% всех игроков
- Твой ранг — Legend
- Ты в топ-35% игроков
Как применять процентили для DevOps и SRE
Вернемся к IT, где процентили применяются чаще других областей.
Алерт времени отклика HTTP
# 95-й процентиль времени отклика HTTP
histogram_quantile(0.95,
rate(http_request_duration_seconds_bucket[5m])
)
# 99-й процентиль использования CPU
quantile(0.99, cpu_usage_percent)
Алерты по процентилям показывают реальное ухудшение пользовательского опыта, а не случайные всплески. Это помогает сократить время восстановления сервиса (MTTR) и повысить общую доступность системы.
Выявление медленных запросов к базе данных
-- Анализ времени выполнения запросов PostgreSQL
SELECT
percentile_cont(0.5) WITHIN GROUP (ORDER BY duration) as p50,
percentile_cont(0.95) WITHIN GROUP (ORDER BY duration) as p95,
percentile_cont(0.99) WITHIN GROUP (ORDER BY duration) as p99
FROM pg_stat_statements
WHERE query LIKE 'SELECT%';
Алерты в Grafana
alerts:
- alert: HighLatencyP95
expr: histogram_quantile(0.95, http_request_duration_seconds) > 0.2
for: 5m
annotations:
summary: "95% пользователей ждут больше 200мс"
FAQ
В чем разница между процентилем и процентом?
Процент — это доля от общего количества (например, 95% запросов).
Процентиль — это пороговое значение, ниже которого находится определенный процент данных (например, 95-й процентиль времени отклика = 200мс).
Пример: если в 95-м процентиле время отклика составляет 200мс, это значит, что 95% запросов выполняются быстрее 200мс.
Как интерпретировать изменения процентилей?
Рост P50 — ухудшение базовой производительности
Рост P95 при стабильном P50 — появление медленных запросов
Рост P99 при стабильных P50/P95 — редкие, но серьезные проблемы
Анализируй тренды вместе с количеством запросов и временем суток.
Какие процентили использовать для SLO?
Для большинства веб-сервисов рекомендуется:
- P95 — для обычных SLO
- P99 — для критических систем
- P50 (медиана) — для базового мониторинга
Не стоит использовать P99.9 без серьезных оснований — это может привести к нереалистичным требованиям.
Как часто пересчитывать процентили?
Зависит от цели:
- Реального времени алерты: каждые 1-5 минут
- Дашборды мониторинга: каждые 5-15 минут
- Еженедельные отчеты: агрегация по дням
- Анализ инцидентов: по минутам во время инцидента
Баланс между актуальностью данных и нагрузкой на систему мониторинга.