🌍 Добрай раніцы! 🇧🇾
TL;DR
- Среднее арифметическое не показывает реальную картину системы
- P99 — время выполнения 99% запросов, а не среднее значение
- Пример: один медленный запрос искажает среднее до 199ms
- Сортировка по возрастанию и формула для расчёта процентиля
🌍 Добрай раніцы! 🇧🇾
Давайте сегодня поговорим про процентили 📊, частенько их встречаю (так как люблю позалипать в графики, посмотреть метрики). Знаю, что не все слышали про них, поэтому будет очень интересно.
Кстати триггер поста, это новость из Минска🗞, средняя зарплата в ноябре 2025г. составила 3,653 рубля 💰.
Я подумал как же удобно считать просто среднюю, вот если бы показали процентили, было бы куда нагляднее.
💡 Cреднее арифметическое, не всегда является числом объективным.
🚀 Мотивация
Cидишь ты такой(ая) утром ☕️, открываешь систему мониторинга и наблюдаешь:
Average response: 250ms ✅
Error rate: 0.5% ✅
Ну песня, все зеленое. Но пока ты просыпаешься и просыпается твоя любовь к людям ❤️, начинают приходить какие-то сообщения в slack 💬, а там вопросы в потолок.
- Почему сегодня так долго крутятся спиннеры?
В этот момент осторожно открываешь метрики подробнее 🔍, и наблюдаешь, что P95 равен 20 секундам. Ужас! Хьюстон у нас проблема! 🚨
❓ Что такое процентили
Это способ понять, как реально работает система 🖥, а не в среднем по больнице 🏥.
🟠P50 (медиана) — 50% запросов быстрее этого значения
🟠P95 — 95% запросов быстрее
🟠P99 — 99% запросов быстрее
🟠P99.9 — 99.9% запросов быстрее
Есть average, оно понятно как считается, складываем все показатели и делим на их кол-во, а с процентилями не так, сначала мы должны отсортировать по возрастанию, а дальше взять процент от всех значений и все что справа, получается больше (дольше выполнение) ⏱️
☝️ На пальцах
Представим:
➡️ 99 запросов выполнилось за 100ms
➡️ 1 запрос завис на 10 секунд
Среднее время: (99×100 + 1×10000) / 100 = 199ms
Выглядит очень неплохо? 🤔 А теперь реальность:
🟠P50: 100ms ✅
🟠P95: 100ms ✅
🟠P99: 10000ms 💥
Один процент пользователей ждёт 10 секунд 😱, но среднее показывает, что всё у нас в огнях 🔥.
И тут вы должны понять, что для вас есть 1% — это 10 пользователей или может быть 1000? Важно ли вам реагировать на такое количество? 🤷♂️
🛍 Как посчитать процентиль
1️⃣ Отсортируйте значения по возрастанию 📈
2️⃣ Индекс = (Процентиль / 100) × Количество элементов
3️⃣ Округлите вверх и возьмите элемент по этому индексу
Пример:
Есть 10 запросов: [100, 120, 95, 10000, 110, 105, 98, 115, 9500, 100]
🟠Сортируем: [95, 98, 100, 100, 105, 110, 115, 120, 9500, 10000]
🟠P95 = элемент на позиции (95/100) × 10 = 9.5 ≈ 10-й элемент === 10000ms
✏️ Best Practices
🟠 Смотрите P95/P99, а не только среднее — там живут ваши чудовища из под кровати 👻
🟠 Не забывайте следить за P99.9 для критичных сервисов — это ваш worst case 🔴
🟠 Алерты на процентили это топ
🟠 Логируйте
🟠 Используйте
🟠 P50 + P95 + P99 — золотая тройка для дашбордов 🏆
💬 Делитесь своим мнением в комментариях👇! Если вам понравился пост, не забудьте поставить лайк! 👍
#MONITORING #BESTPRACTICES #DevOps
Давайте сегодня поговорим про процентили 📊, частенько их встречаю (так как люблю позалипать в графики, посмотреть метрики). Знаю, что не все слышали про них, поэтому будет очень интересно.
Кстати триггер поста, это новость из Минска🗞, средняя зарплата в ноябре 2025г. составила 3,653 рубля 💰.
Я подумал как же удобно считать просто среднюю, вот если бы показали процентили, было бы куда нагляднее.
💡 Cреднее арифметическое, не всегда является числом объективным.
🚀 Мотивация
Cидишь ты такой(ая) утром ☕️, открываешь систему мониторинга и наблюдаешь:
Average response: 250ms ✅
Error rate: 0.5% ✅
Ну песня, все зеленое. Но пока ты просыпаешься и просыпается твоя любовь к людям ❤️, начинают приходить какие-то сообщения в slack 💬, а там вопросы в потолок.
- Почему сегодня так долго крутятся спиннеры?
В этот момент осторожно открываешь метрики подробнее 🔍, и наблюдаешь, что P95 равен 20 секундам. Ужас! Хьюстон у нас проблема! 🚨
❓ Что такое процентили
Это способ понять, как реально работает система 🖥, а не в среднем по больнице 🏥.
🟠P50 (медиана) — 50% запросов быстрее этого значения
🟠P95 — 95% запросов быстрее
🟠P99 — 99% запросов быстрее
🟠P99.9 — 99.9% запросов быстрее
Есть average, оно понятно как считается, складываем все показатели и делим на их кол-во, а с процентилями не так, сначала мы должны отсортировать по возрастанию, а дальше взять процент от всех значений и все что справа, получается больше (дольше выполнение) ⏱️
☝️ На пальцах
Представим:
➡️ 99 запросов выполнилось за 100ms
➡️ 1 запрос завис на 10 секунд
Среднее время: (99×100 + 1×10000) / 100 = 199ms
Выглядит очень неплохо? 🤔 А теперь реальность:
🟠P50: 100ms ✅
🟠P95: 100ms ✅
🟠P99: 10000ms 💥
Один процент пользователей ждёт 10 секунд 😱, но среднее показывает, что всё у нас в огнях 🔥.
И тут вы должны понять, что для вас есть 1% — это 10 пользователей или может быть 1000? Важно ли вам реагировать на такое количество? 🤷♂️
🛍 Как посчитать процентиль
1️⃣ Отсортируйте значения по возрастанию 📈
2️⃣ Индекс = (Процентиль / 100) × Количество элементов
3️⃣ Округлите вверх и возьмите элемент по этому индексу
Пример:
Есть 10 запросов: [100, 120, 95, 10000, 110, 105, 98, 115, 9500, 100]
🟠Сортируем: [95, 98, 100, 100, 105, 110, 115, 120, 9500, 10000]
🟠P95 = элемент на позиции (95/100) × 10 = 9.5 ≈ 10-й элемент === 10000ms
✏️ Best Practices
🟠 Смотрите P95/P99, а не только среднее — там живут ваши чудовища из под кровати 👻
🟠 Не забывайте следить за P99.9 для критичных сервисов — это ваш worst case 🔴
🟠 Алерты на процентили это топ
🟠 Логируйте
slow requests — если запрос попал в top 1% по времени, пишите его в логи с деталями 📝🟠 Используйте
histogram, а не summary в Prometheus — можно агрегировать, считать любые процентили 📉🟠 P50 + P95 + P99 — золотая тройка для дашбордов 🏆
💬 Делитесь своим мнением в комментариях👇! Если вам понравился пост, не забудьте поставить лайк! 👍
#MONITORING #BESTPRACTICES #DevOps

Хотите больше таких постов?
Подпишитесь на канал и читайте продолжение в Telegram.