Процентиль (перцентиль) — это значение, ниже которого находится определенный процент всех наблюдений.

В IT процентили (например, 95 процентиль) используются для анализа производительности систем, мониторинга времени отклика и установки SLO. Это одна из ключевых метрик для обеспечения надежности IT-систем.

Простыми словами: если время отклика API составляет 100мс в 95-м процентиле, это означает, что 95% всех запросов выполняются быстрее 100мс, а оставшиеся 5% — медленнее.

Процентиль простыми словами для начинающих

Представь 100 школьников, выстроенных по росту от низкого к высокому: кто-то ростом 154 см, 160, 167, 170 ... 190. Так вот 95‑й процентиль — это рост того школьника, который выше 95% других школьников из 100.

Если ты в 90‑м процентиле по росту = Ты выше 90% людей и ниже только 10%

    Среднее
    P50 (медиана)
    P95
    P99

    Как работают процентили в мониторинге 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 минут
    • Еженедельные отчеты: агрегация по дням
    • Анализ инцидентов: по минутам во время инцидента

    Баланс между актуальностью данных и нагрузкой на систему мониторинга.