Актуально на травень 2026. Автор: інженер з продуктивності та SRE, 9+ років досвіду.
Коли сервери не сплять: коротка історія з піку
19:03. Реклама з ефіру зайшла в ціль. Трафік різко зріс у 4 рази. На графіках — зелений ліс зростаючих RPS. За дві хвилини каса стала повільною. Люди тиснуть «Оплатити», але відповідь йде 2–3 секунди. Через 10 хвилин частина сесій падає. Корінь проблеми виявився простим: холодний кеш, невдалий прогрів, і черга на платежі без бекофа. Цей кейс навчив команду: готувати сценарії саме під пік, а не «середній день».
Висновок простий. Пік — це окрема подія. Вона має власний профіль навантаження, свої вузькі місця та окремий план експерименту. Далі — як зробити так, щоб у ваш найгарячіший вечір все працювало швидко і стабільно.
Пік — це не лише трафік. Це кеш, черги, бази, мережа
Коли на сайт іде вал користувачів, «ламаються» не тільки веб-сторінки. Пливуть кеш-хітрейт, затримки в чергах, з’єднання до БД, квоти зовнішніх API. Ланцюг довгий: балансувальник → CDN → бекенд → БД → черги → зовнішні сервіси. Будь-який слабкий вузол вдарить по всій системі.
Розумійте пік як повну подорож подій. Аналізуйте його за реальними патернами (сплески, довгі плато, стрибки з ретраями). Добре описує типові хвилі та захист від DDoS розбір у блозі Cloudflare — подивіться практичні графіки і поради щодо пікових вікон: аналіз пікового трафіку.
Також не забувайте про UX-метрики у фронтенді. Core Web Vitals напряму впливають на конверсію в пік (важливо, коли бекенд швидкий, але браузер «важкий»). Офіційні орієнтири тут: Core Web Vitals.
Що міряти перш за все: бізнес-SLO поверх сирих RPS
Ключ — зв’язати технічні числа з бізнес-ціллю. Не лише «RPS і CPU», а «відсоток успішних оплат», «час видачі пошуку», «частка кинутих кошиків». Для піку це і є SLO. Наприклад: «99,5% оплат до 800 мс», «помилки в чекауті ≤0,5%», «p95 пошуку ≤300 мс». Технічні метрики (RPS, p95/p99, кеш-хітрейт, лаг черги) стають інструментом для захисту SLO.
Як формулювати SLO і не загубитись у термінах — дивіться «книгу SRE» від Google: Service Level Objectives. Вона дає рамку, як тримати баланс між швидкістю і надійністю.
Антикаталог помилок пікового дня
- Stampede на пошук. Рекламний меседж змістив попит з «чекауту» на «пошук»; кеш не встиг, індекс став вузьким місцем.
- Черга платежів без бекофа. Ретраї без джітеру добили шлюз, помилки пішли «ялинкою».
- Кеш-хітрейт впав після релізу. Один заголовок cache-control зламав едж-кеш. Трафік злетів на бекенд уpeak.
- Таймаути коротші за P95. Через занадто малі таймаути — лавина ретраїв і подвійний тиск.
- Пул конекшнів до БД забитий. Сервіс масштабували у 3×, пул — ні. Контеншен і висока латентність.
Як запобігти черговим колапсам? Перегляньте шаблон Queue-based load leveling. Це базова, але дуже дієва ідея для згладжування валів подій.
Інфотаблиця: сценарії для пікових днів (що, як і чим міряти)
Таблиця нижче — стартовий набір. Візьміть 3–5 критичних сценаріїв, підставте свої метрики та пороги. Не женіться за десятками кейсів: краще глибше, але по суті. Запускайте сценарії окремо і разом, щоб бачити перетоки навантаження.
| Масовий пошук товарів після пуш-кампанії | 10→50 RPS за 10 хв; плато 30 хв; стрес 2× на 5 хв | Кеш, пошук, БД | p95 ≤ 300 мс; miss ≤ 20%; CPU ≤ 70% | 99% < 500 мс; помилки ≤ 0,3% | k6, Grafana/Prometheus | Синтетика з реальним розподілом запитів | Агресивніший edge-кеш; спрощений результат пошуку |
| Перегляд картки товару з варіаціями | 15→80 RPS стрибком; плато 20 хв | CDN, кеш API, мікросервіси атрибутів | Cache hit ≥ 85%; p99 ≤ 600 мс | 99% < 400 мс | Gatling, APM | Слепок популярних SKU (аноніміз.) | Edge-кеш HTML; відкласти пов’язані блоки |
| Checkout з оплатою карткою | 5→20 RPS; плато 20 хв; стабільний шум ретраїв | API платежів, черга, база замовлень | Помилки ≤ 0,5%; p99 ≤ 800 мс; лаг черги | 99,5% успіху; SLA платіжного шлюзу | JMeter, APM/трейсинг | Псевдонімізований слепок транзакцій | Exponential backoff; альтернативний шлюз |
| Старт розпродажу квитків | 3× за 2 хв; далі «сходинки» кожні 5 хв | Локи місць, транзакції, черги | p95 ≤ 500 мс; конфлікти локів; saturation | 99% броней без конфліктів | Locust, Redis моніторинг | Синтетика + «гарячі» події | Пул місць; м’яка деградація UI під навантаженням |
| Банківський переказ із підтвердженням | Плавний ріст 1→10 RPS; довге плато | Сервіси AML/KYC, зовнішні API, таймаути | Timeout rate; p95 ≤ 900 мс; черги | 99,9% без помилок; SLA зовнішніх API | k6 + Chaos (фліп таймаутів) | Анонімні кейси + синтетика помилок | Кеш рішень KYC; режим «обмеженої функції» |
| Живі ігри у прайм-тайм (гемблінг) | Стрибок 3× за 2 хв; шум у чаті | Стрім, чат, платежі, кеш профілів | Jitter ≤ 150 мс; drop ≤ 0,2%; p95 транзакцій | Uptime 99,9%; відмова ≤ 0,1% | Gatling + трасування | Синтетика + патерни реальних вечорів | Адаптивна якість відео; пріоритизація транзакцій |
| Масовий логін з MFA | Пік 50 RPS на 5 хв; далі плато 15 хв | Сесійне сховище, SMS/e-mail шлюзи | p95 OTP ≤ 2 с; помилки ≤ 0,5% | 99% видача OTP до 2 с | JMeter + ліміти зовнішніх шлюзів | Синтетика + rate limits | Кеш дотичних даних; резервний канал OTP |
Мікросценарії під різні вертикалі
E‑commerce
- Серії швидких пошуків за брендом після пуша та TV-реклами.
- Каскадний перегляд карток: галерея → відгуки → розмірна сітка.
- Комплектні кошики: кілька доставок, купони, подарункові пакування.
Квитки та івенти
- Флеш-бронювання в перші 2–3 хвилини після старту продажу.
- Колізії місць при перегляді плану залу.
- Пік повернень за годину до дедлайну.
Банкінг/фінтех
- Серії дрібних P2P-переказів у прайм.
- Валідація KYC/AML пакетами під обмежені квоти.
- Виплати на картки з різними платіжними мережами.
Гемблінг
- Старт живих столів у прайм із різкою зміною бітрейту.
- Піковий чат під час великих турнірів.
- Сплески депозитів/виплат під бонусні вікна.
Редакційна примітка. Патерни трафіку у вечірні години відчутно різняться за країнами та провайдерами. Для ринку Данії є корисні зрізи трафіку та платіжних шляхів у незалежних оглядах. Див. Danske Casinoer i Danmark — це допоможе підібрати реалістичні сценарії під ваш тайм-зонний «прайм» без здогадок.
Інструменти: міксуємо JMeter, k6, Gatling, Locust
Немає одного «срібного» інструменту. Під протокольні тести підійде JMeter (див. посібник Apache JMeter). Для сценаріїв на JS з гарною телеметрією — k6 (документація k6). Для Scala-стеків і високої пропускної — Gatling (довідник Gatling). Для простих Python-сценаріїв з розподілом ролей — Locust (документація Locust).
Ключ — пов’язати генератор навантаження з APM/трасуванням і метриками інфраструктури. Тоді ви бачите, де саме гальмує: код, БД, мережа чи зовнішній API. Знімайте трейси для повільних транзакцій, інакше втратите деталі.
Дані для тестів: синтетика чи слепки з продакшену
Готуйте суміш. Візьміть анонімізований слепок подій (воронки, SKU, тарифи, часті помилки) та домішайте синтетичні «хвости» (рідкі запити, дивні фільтри). Пам’ятайте: розподіл запитів важливіший за «красиві числа» RPS.
Особливо стежте за приватними даними. Анонімізуйте чи псевдонімізуйте. Базові принципи пояснено тут: псевдонімізація згідно з GDPR.
План експерименту: прогрів → «сходинки» → плато → стрес → відновлення
- Прогрів (10–30 хв). Наповніть кеші, встановіть стабільний GC, прогрійте пули.
- Сходинки. Піднімайте навантаження порціями (наприклад, +10 RPS кожні 3–5 хв).
- Плато. Тримайте стабільний рівень 20–40 хв. Міряйте p95/p99, помилки, saturation.
- Стрес. Короткий ривок 1,5–2×, щоби побачити «край» системи без ризику.
- Відновлення. Зніміть навантаження і перевірте, як швидко черги та кеші повертаються у норму.
Додайте краплю хаосу: вимкніть один із зовнішніх API, збільште латентність мережі на 200 мс, зсуньте таймаути. Надихніться кейсами з Netflix Tech Blog — там добре показано, як вони підходять до chaos engineering.
Спостережуваність, яка рятує у пік
Тримайте «золоті сигнали»: латентність, помилки, пропускна здатність, насичення. Плюс бізнес-метрики зверху. Один дашборд — одна історія: що зараз болить і що робити. Придивіться до пояснень і прикладів у керівництві з чотирьох «золотих сигналів».
Архітектурні важелі під пік
- Edge/CDN кеш: кешуйте все, що можна; рухайте TTL і ключі кешу обережно.
- Кеш-френдлі рендеринг: менше варіантів сторінок, більше варіантів даних у кеші.
- Rate limiting і backpressure: захистіть бекенд від бурі ретраїв.
- Пули з’єднань: розмір, таймаути, стратегії відмов.
- Фіче-флаги та «деградація на милість»: прибирайте дорогі блоки під навантаженням.
Почати можна з базового тюнінгу веб-сервера. Корисний довідник: налаштування продуктивності NGINX. Про кешування на CDN добре розписано тут: стратегії кешування на рівні CDN.
Як говорити з CFO: скільки коштує хвилина простою в пік
Порахуйте просту модель. X транзакцій за хвилину × середній чек × маржа. Це дає ціну однієї хвилини. Далі — очікувана тривалість збою без підготовки. Покажіть окупність плану тестів і буфера ємності. Для структури думок з фінансового боку корисні принципи з AWS Well‑Architected: Cost Optimization.
Контрольний список перед піковим днем
- Кеші прогріті; ключі та TTL перевірені на прод-лайк середовищі.
- Rate limits узгоджені між фронтом, бекендом і зовнішніми API.
- Таймаути та ретраї з експоненційним бекофом і джітером.
- Пули з’єднань масштабовані пропорційно реплікам.
- Фіче-флаги для швидкої деградації «важких» блоків.
- Резервний платіжний шлюз налаштований і протестований.
- Моніторинг і алерти по бізнес-SLO, не лише по CPU.
- Дашборди «пік-режиму» з Golden Signals і ключовими бізнес-лініями.
- Квоти сторонніх сервісів підтверджені письмово.
- Сертифікати/ключі не протухають у вихідні.
- Runbook інцидентів: хто телефонує, кого будять, як відкотити.
- Бекап конфігів і «червона кнопка» зниження навантаження.
Після бою: постмортем без звинувачень
Зберіть факти: таймлайн, дані з метрик і логів, рішення, що спрацювали. Визначте 2–3 покращення процесу, а не «знайдіть винного». Корисний шаблон для письма: постмортем від Atlassian.
Міфи і правда про навантажувальні тести
- Міф: «Достатньо одного великого тесту раз на рік». Правда: профіль піку змінюється; робіть серії коротких тестів перед кожним великим івентом.
- Міф: «Потрібні тисячі віртуальних користувачів». Правда: важливі реальні патерни, черги і кеш. Кількість — не все.
- Міф: «Середній p50 норм — значить, все ок». Правда: надійність визначає p95/p99 і помилки на бізнес-критичних кроках.
- Міф: «CDN вирішить усе». Правда: некоректні ключі й TTL проб’ють кеш і вб’ють бекенд.
- Міф: «Chaos — це ризиковано перед піком». Правда: маленькі, контрольовані ін’єкції хаосу рятують у реальних збоях.
Міні-гайд по назвах, титулах і даних (для SEO без «переспаму»)
- Title: чітко про пік і сценарії. Наприклад: «Пікове навантаження без паніки: сценарії, SLO і план експериментів».
- Meta description: коротко про профілі, інструменти, чекліст.
- Alt для діаграм: прості й описові (див. нижче приклади).
- Внутрішні посилання: на керівництва з кешування/CDN/observability у вашому блозі.
Посилання на авторитетні джерела, корисні для поглиблення
- Як великі рітейлери готують Black Friday/Cyber Monday: Shopify Engineering.
- Поведінка пікового трафіку та захист на периметрі: Cloudflare Blog.
- Формулювання SLO на практиці: SRE Book: SLO.
- Черги як буфер під пік: Microsoft Learn: Queue-based load leveling.
- Документації інструментів навантаження: JMeter, k6, Gatling, Locust.
- Chaos-підхід у продакшені: Netflix Tech Blog.
- Тюнінг веб-сервера під високе навантаження: NGINX Performance Tuning.
- CDN кешування без болю: Fastly Caching Concepts.
- Вартість надійності: AWS Well‑Architected (Cost).
- Core Web Vitals для фронтенду: web.dev.
- Золоті сигнали спостережуваності: Datadog Monitoring 101.
- Постмортем: Atlassian.
- GDPR і псевдонімізація: gdpr.eu.
FAQ
Чим відрізняється стрес‑тест від тесту пікового плато?
Стрес‑тест шукає межу та «режим відмов». Пікове плато перевіряє, чи витримає система реальний високий рівень упродовж довшого часу без просідання метрик і SLO.
Скільки триває прогрів перед піком?
Залежить від кешів і бекграунд-задач. Часто 10–30 хв вистачає. Дивіться на стабілізацію p95 і GC-пауз, а також на прогрів кешів до цільового hit-rate.
Як узгодити бізнес-SLO з технічними метриками?
Прив’язуйте «золоті сигнали» (латентність, помилки, пропуск, насичення) до бізнес-подій (оплати, пошук, бронювання). Встановіть бюджети помилок і пороги p95/p99 для кожного кроку воронки.
Методологія і автор
Як ми збирали підходи: відпрацьовані сценарії з прод‑інцидентів за останні роки, контрольовані тести у препроді з реальними розподілами подій, кореляція трейсерів і метрик, перевірка відновлення після стресу. В інструментах — JMeter/k6/Gatling/Locust, APM і системи трасування.
Автор: інженер з продуктивності та SRE. 9+ років у e‑commerce, фінтех і гемблінгу. Сертифікації: AWS (Architect Associate), GCP (Associate Cloud Engineer). Працював з піковими івентами на десятках сервісів, включно з BFCM і великими трансляціями.



