Операції та Управління → Метрики продуктивності
Метрики продуктивності
1) Навіщо потрібні метрики продуктивності
Продуктивність - це здатність системи забезпечувати цільові SLO за часом відгуку і пропускної здатності при заданій вартості. Без метрик неможливо:- виявляти деградації до інцидентів,
- прогнозувати ємність і бюджет,
- порівнювати альтернативні рішення (кеш vs БД, gRPC vs REST),
- управляти регресіями після релізів.
Принципи: єдиний словник метрик, агрегування по перцентилях (p50/p90/p95/p99), роздільний облік «гарячих» і «холодних» шляхів, контекст (версія, регіон, провайдер, пристрій).
2) Таксономія метрик
2. 1 Базові SRE-рамки
Чотири золотих сигнали: Latency, Traffic, Errors, Saturation.
RED (для мікросервісів): Rate, Errors, Duration.
USE (для заліза): Utilization, Saturation, Errors.
2. 2 Рівні
Інфраструктура: CPU, RAM, диск, мережа, контейнери, вузли.
Платформа/Сервіси: API-ендпойнти, черги, кеші, БД, шини подій.
Клієнтський досвід: Web Vitals, мобільні SDK, стрімінг, CDN.
Дата-платформа: ETL/ELT, стріми, вітрини, BI затримки.
Бізнес-критичні флоу: авторизація, KYC, депозити/виплати, гейм-раунди.
3) Каталог ключових метрик і формули
3. 1 API і мікросервіси
RPS (Requests per second).
Latency p50/p95/p99 (ms) - бажано «end-to-end» і «backend-only».
Error Rate (%) = 5xx + валідовані 4xx/всі запити.
Saturation: середня довжина черги воркерів, «in-flight» запити.
Cold Start Rate (для FaaS).
Throttling/Dropped Requests.
SLO приклад: p95 latency ≤ 250 ms при RPS до 2k в регіоні EU-East; помилки ≤ 0. 5%.
3. 2 Бази даних
QPS/Transactions/s, avg/median query time, p95 query time.
Lock Waits / Deadlocks, Row/Index Hit Ratio, Buffer Cache Miss%.
RepLag (реплікація), Checkpoint/Flush time, Autovacuum lag.
Hot Keys/Skew - топ-N ключів по навантаженню.
Формула «Запитів на ядро»: QPS/ vCPU_core_count → сигнал для шардування.
3. 3 Кеш і CDN
Hit Ratio (%), Evictions/s, Latency p95, Item Size percentiles.
Origin Offload (%) для CDN, TTFB, Stale-while-revalidate hit%.
3. 4 Черги/стріми
Ingress/egress msg/s, Consumer Lag (повідомлень/час), Rebalance rate.
Processing Time p95, DLQ Rate.
3. 5 Інфраструктура/контейнери
CPU Utilization %, CPU Throttle %, Run Queue length.
Memory RSS/Working Set, OOM kills, Page Faults.
Disk IOPS/Latency/Throughput, Network RTT/ retransmits.
Node Saturation: pods pending, pressure (CPU/Memory/IO).
3. 6 Web-клієнт (UX)
Core Web Vitals: LCP, INP, CLS.
TTFB, FCP, TTI, Resource Timing (DNS, TLS, TTFB, download).
Error Rate (JS), Long Tasks, SPA route change time.
CDN Geo-Latency (перцентильний).
3. 7 Мобільний клієнт
App Start time (cold/warm), ANR rate, Crash-free sessions %.
Network round-trips/session, Payload size, Battery drain/session.
Offline success rate (кешовані операції).
3. 8 Дата-платформа і звітність
Freshness Lag (T-now → витрина), Throughput rows/s, Job Success %.
Cost per TB processed, Skew по партіях, Late events%.
BI Time-to-Render p95 для ключових дашбордів.
3. 9 Доменно-критичні флоу (iGaming як приклад)
Auth p95, KYC TTV (Time-to-Verify), Deposit/Withdrawal p95.
Game Round Duration p95, RNG call latency, Provider RTT p95.
Payment PSP success rate, Chargeback investigation SLA.
4) Нормалізація, перцентилі та атрибуція
Перцентили проти середніх: фіксуємо p50/p90/p95/p99 - середні згладжують пікові болі.
Розрізи: версія програми, регіон, провайдер, канал мережі (4G/Wi-Fi), пристрій.
Кореляція: пов'язуємо «backend-only» і «real-user» метрики для причинно-наслідкових ланцюжків.
Exemplars/Traces: пов'язуємо екстремальні перцентілі з трасуваннями.
5) Пороги і алерти (приблизна сітка)
Latency p95 (core API): warning> 250 ms, critical> 400 ms 5 хв поспіль.
Error rate: warning > 0. 5%, critical> 2% (за ендпойнтом, не глобально).
DB RepLag: warning > 2 s, critical > 10 s.
Kafka consumer lag (time): warning > 30 s, critical > 2 min.
Web LCP (p75): warning > 2. 5 s, critical > 4 s.
Mobile ANR: warning > 0. 5%, critical > 1%.
ETL Freshness: warning > +15 min, critical > +60 min от SLA.
Використовуємо статичні + адаптивні пороги (сезонність, денні шаблони), дедуплікацію та групування алертів за сервісами/релізами.
6) Тестування продуктивності
Типи: baseline, стрес, тривале (soak), хаос (degrade links/PSP).
Навантажувальні профілі: за реальними трейсами (distribution-based), «бурсти», регіональні піки.
Цілі: досягнення SLO при цільових RPS і mix операцій, валідація backpressure.
Метрики прогону: Throughput, Error%, p95 latency, GC паузы, CPU throttle, queue lag, cost/run.
Правило регресій: реліз вважається успішним, якщо p95 не погіршений> 10% при рівному профілі, а вартість запиту (CPU-ms/запит) не зросла> 15%.
7) Планування ємності та ціна/продуктивність
Demand model: RPS по годинах × середня робота/запит (CPU-ms, IO-ops).
Headroom: 30-50% запасу для критичних шляхів, auto-scaling по P95.
Cost KPIs: Cost per 1k requests, Cost per GB served, $ per 1 p. p. LCP поліпшення.
Кешування/денормалізація: вважати «cache ROI» = (економія CPU-ms − вартість кешу).
Теплі та холодні регіони: offload в CDN/edge, реплікація «тільки читання».
8) Практики спостережуваності та профілювання
Трасування: розподілені trace-ID через всі hop'и; семплювання розумне (tail-based).
Метрики: Prometheus/OpenTelemetry, єдина нотація імен і лейблів.
Логи: з кореляцією по trace/span, budget на лог-шум, редагування PII.
Профілювальники: CPU/Heap/Alloc/Lock profiles, безперервне профілювання (eBPF).
Екземпляри-зразки: зв'язуємо p99 сплески з конкретними span/SQL/PSP-колом.
9) Метрики релізів і команд (для повноти)
DORA: Deployment Frequency, Lead Time, Change Failure Rate, MTTR.
SPACE: задоволеність, продуктивність, активність, комунікація, ефективність.
Ці метрики не про залізо, але безпосередньо впливають на стійкість продуктивності.
10) Анти-патерни
Гнатися за середніми: ігнорування p95/p99.
«Глобальний» error rate: приховує хворобливі ендпойнти.
Без атрибуції за версіями: неможливо ловити регресії клієнта.
Алерт-спам: пороги без гістерезису і корекції сезонності.
Оптимізація «наосліп»: відсутність профілювання і трасувань.
Змішування UX і backend latency: неправильні висновки з клієнтського досвіду.
11) Чек-листи
Єдиний стандарт метрик
- Словник метрик з формулами, одиницями, власниками
- Обов'язкові перцентилі p50/p90/p95/p99
- Трейс-кореляція та лог-кореляція
- Теги: регіон, версія, провайдер, пристрій, канал мережі
- Пороги з гістерезисом і дедуплікацією
Перед релізом
- Бейзлайн p95/p99 на стейджі та проді
- Канарковий трафік + порівняння метрик A/B
- Фіча-прапор з швидким відкатом
- План спостереження (observability runbook)
Регулярно
- Рев'ю найповільніших топ-N запитів/SQL
- Аудит кеш-політик і TTL
- Перевірка Freshness і реплікацій БД
- Тести деградації зовнішніх провайдерів (PSP, KYC)
12) Міні-плейбуки (приклад)
Деградація p95/api/payments
1. Звірити error% і зовнішні таймаути PSP.
2. Перевірити consumer lag черги коллбеків.
3. Переглянути trace прикладів p99: вузьке місце SQL/HTTP?
4. Включити кеш довідників/лімітів, знизити N + 1.
5. Бюджет: тимчасово підняти ресурси воркера на 20%, включити autoscale.
6. Post-fix: індекс за (psp_id, status, created_at), ретрай-джиттер.
Зростання RepLag в БД
1. Перевірити «важкі» запити і довгі транзакції.
2. Збільшити паралелізм реплікації, тюнити checkpoint.
3. Offload читання в кеш/репліки тільки читання.
4. При пікових вікнах - частковий денорм + батчі.
13) Приклади формул/SQL (спрощено)
Error Rate по ендпойнту
sql
SELECT endpoint,
100. 0 SUM(CASE WHEN status >= 500 THEN 1 ELSE 0 END) / COUNT() AS error_pct
FROM http_logs
WHERE ts >= now() - interval '5 minutes'
GROUP BY 1
HAVING COUNT() > 500;
Latency p95 (TDigest/Approx)
sql
SELECT endpoint, approx_percentile(latency_ms, 0. 95) AS p95_ms
FROM http_metrics
WHERE ts >= date_trunc('hour', now())
GROUP BY 1;
Consumer Lag (час)
sql
SELECT topic, consumer_group,
max(produced_ts) - max(consumed_ts) AS lag_interval
FROM stream_offsets
GROUP BY 1,2;
Web LCP p75
sql
SELECT approx_percentile(lcp_ms, 0. 75) AS lcp_p75
FROM web_vitals
WHERE country = 'UA' AND device IN ('mobile','tablet')
AND ts >= current_date;
14) Вбудовування в дашборди і звітність
Картки KPI: p95 latency, error%, RPS, saturation з трендами WoW/DoD.
Топ-N «найгірших» ендпойнтів/SQL/ресурсів, клікабельний drill-down → trace.
Кореляція версій клієнта: граф «версія → p95 LCP/INP → конверсія».
Карта світу: geo-latency (CDN), PSP latency по регіонах.
SLO-панель: частка часу в SLO, вильоти з SLO, «бюджет помилок».
15) Підсумки
Метрики продуктивності - це системна дисципліна: єдиний словник, перцентили, атрибуція, хороша спостережуваність і строгі SLO. Комбінуючи технічні (латентність, лаги, кеш-хіти) і продуктові сигнали (час KYC, депозит p95, LCP), ви керуєте якістю досвіду і вартістю його доставки - передбачувано і масштабовано.