Процентиль
Также: перцентиль, percentile, квантиль, p95, p99
Процентиль — значение, ниже которого лежит заданная доля наблюдений. 95-й процентиль времени ответа 2,4 секунды означает: 95% запросов уложились в 2,4 секунды, а 5% были медленнее. Показывает край распределения, который среднее полностью скрывает.
Процентиль (перцентиль, percentile) — значение, ниже которого лежит заданная доля наблюдений. Если 95-й процентиль времени ответа равен 2,4 секунды, значит 95% запросов отработали быстрее, а 5% — медленнее.
Процентили нужны там, где важно не типичное, а худшее. Среднее время ответа 300 мс звучит прекрасно ровно до момента, когда выясняется, что каждый двадцатый пользователь ждёт по восемь секунд и уходит. Среднее эту группу растворяет, процентиль — показывает.
Как это считается?
Отсортировать наблюдения по возрастанию и взять то, что стоит на нужной доле пути. 50-й процентиль — это медиана. Обозначения p50, p95, p99 читаются как «50-й, 95-й, 99-й процентиль».
- p50 — типичный пользователь. Половине хуже, половине лучше.
- p95 — заметное меньшинство с плохим опытом. Основной рабочий показатель для скорости.
- p99 — край. В сервисе с миллионом запросов в сутки это десять тысяч случаев — уже не редкость, а поток жалоб.
В SQL считается оконной функцией: PERCENTILE_CONT(0.95) WITHIN GROUP (ORDER BY response_ms).
Пример с числами
Два релиза одного API. Среднее время ответа почти не изменилось:
| Показатель | Релиз A | Релиз B |
|---|---|---|
| Среднее | 310 мс | 295 мс |
| p50 | 180 мс | 175 мс |
| p95 | 900 мс | 2 400 мс |
| p99 | 1 400 мс | 8 100 мс |
По среднему релиз B даже чуть лучше, и отчёт «ускорились на 15 мс» был бы формально правдой. По хвосту он катастрофа: каждый сотый запрос стал медленнее в шесть раз. При миллионе запросов в сутки это десять тысяч человек, ждущих восемь секунд. Среднее здесь не просто бесполезно — оно активно вводит в заблуждение, потому что улучшение в массе перекрыло резкое ухудшение на краю.
Какой процентиль выбрать?
| Задача | Показатель | Почему |
|---|---|---|
| Скорость интерфейса | p75 и p95 | Core Web Vitals считаются по p75 |
| Надёжность API | p95 и p99 | Хвост определяет SLA и жалобы |
| Чек и выручка на клиента | p50 и p90 | Среднее ломается об крупных клиентов |
| Время до первой ценности | p50 | Нужен типичный путь, а не край |
Где чаще всего ошибаются?
- Отчитываться средним там, где решает хвост. Скорость, время ожидания, размер ответа — всё это распределения с длинным хвостом, и среднее по ним обманывает.
- Усреднять процентили между периодами или серверами. Считать надо на объединённой выборке.
- Считать p99 на маленькой выборке. На 200 наблюдениях p99 — это две точки, и он прыгает от замера к замеру.
- Оптимизировать p99 в ущерб p50. Иногда край чинится ценой заметного замедления для всех — это ухудшение, а не улучшение.
- Путать «95-й процентиль» и «95% пользователей довольны». Процентиль — про значение метрики, а не про удовлетворённость.
Связанные термины
- Медиана — тот же инструмент для середины распределения.
- Оконные функции SQL — чем процентили считают на практике.
- Дашборд — куда их выносить, чтобы среднее не обманывало команду.
Продуктовая аналитика 2.0
Углубленный курс продуктовой аналитики с Python, ML и продвинутыми техниками анализа
Посмотреть курс