Сколько трафика выдерживает молодой магазин, пока не начнёт тормозить оформление заказа?
Интернет-магазин с маленьким каталогом
Держит ~17 запр./с на коротких ступенях (2,7 мин), не выдерживает ~29 запр./с
Первым замедлился Добавить в корзину: p95 2–3 с при границе 1,5 с.
- Держит
- ~17запр./с
- измерено за 2,7 мин
- Не выдерживает
- ~29запр./с
- по SLO
Проверено 6 из 12 шагов на этой скорости; 6 не проверены — мало замеров (< 100 в окне)
- Выбор доставки
- Оформление заказа
- Начало оплаты
- Платёжная сессия
- Способы доставки
- Адрес доставки
ступени по 1,6–3,9 мин · проверки: 79 прошли, 7 не прошли, 34 — мало данных, 40 не выполнялись · подано 100 % плана · здоровье генераторов не подтверждено
Синтетическая нагрузка снаружи; реальный трафик и метрики ваших серверов сюда не входят.
Что делать дальше
- Подтвердите нагрузочным тестом на ~14 запр./с.
- Чтобы проверить Выбор доставки, Оформление заказа, Начало оплаты и ещё 3, нужен прогон не короче 14 мин на этой скорости: у них меньше 100 замеров.
300 товаров и несколько сотен заказов: магазин в первые месяцы работы.
Пример: настоящий прогон CapacityLab против магазина, который мы держим сами
Как проводился тест
Где лежит предел
Каждая точка — скорость, на которой магазин держали не меньше полутора минут. Она пройдена, если каждый шаг визита с достаточной выборкой держит p95 в границе задержки и ошибок меньше 1%; редкий шаг оформления с малой выборкой на этой скорости показан как отсутствующий, а не как пройденный.
- Не выдержал 30 мин13,5 запр./с
- Выдержал 60 мин13,5 запр./с
- Не выдержал 180 мин13,5 запр./с
- Выдержал 720 мин13,5 запр./с
- Замедлился первым
- Добавить в корзину
- Граница задержки
- p95 ≤ 1,5 с
План против факта
Поиск поднимается по лестнице скоростей. На каждой ступени генераторы подавали запланированную скорость; столбики — сколько магазин на самом деле ответил, и его p95 на этой ступени.
| План | Факт | p95 | Ошибки | Итог |
|---|---|---|---|---|
| 10,1 | 10,3 | 400 мс | 0% | Выдержал |
| 17 | 17,8 | 500 мс | 0% | Выдержал |
| 28,5 | 28,4 | 1 с | 0% | Сломался |
| 48 | — | — | — | Остановлен |
- Добавить в корзину: p95 3 с при границе 1,5 с.
- Шагов: 6 визита получили меньше трафика, чем по плану: визиты замедлились и отстали от расписания (минимум 82,4% от плана).
Какой шаг замедлился первым
p95 каждого шага визита на каждой скорости против границы. Шаг, который Result называет ограничивающим, отмечен.
| Шаг визита | Доля | 10,1 запр./с | 17 запр./с | 28,5 запр./с |
|---|---|---|---|---|
Регион магазинаGET /store/regions | 2,9% | — | 75 мс | 200 мс |
КатегорииGET /store/product-categories | 8,6% | — | 75 мс | 200 мс |
КаталогGET /store/products | 29% | 75 мс | 100 мс | 300 мс |
ПоискGET /store/products | 12% | 75 мс | 100 мс | 300 мс |
Карточка товараGET /store/products/{product_id} | 39% | 75 мс | 100 мс | 400 мс |
Добавить в корзинуОграничиваетPOST /store/carts | 2,9% | — | 1 000 мс | 3 000 мс |
Адрес доставкиPOST /store/carts/{cart_id} | 1,4% | — | — | — |
Способы доставкиGET /store/shipping-options | 1,4% | — | — | — |
Выбор доставкиPOST /store/carts/{cart_id}/shipping-methods | 1,4% | — | — | — |
Начало оплатыPOST /store/payment-collections | 0,7% | — | — | — |
Платёжная сессияPOST /store/payment-collections/{payment_collection_id}/payment-sessions | 0,7% | — | — | — |
Оформление заказаPOST /store/carts/{cart_id}/complete | 0,7% | — | — | — |
p95, SLO ≤ 1 500 мс
Держит ли дольше
Поиск предела находит его за минуты. Длинные прогоны ниже предела показывают, держит ли магазин дальше: утечки, очереди и холодные кэши проявляются не сразу.
- Найти пределПредел найден — предварительноДержит ~17 запр./с на коротких ступенях (2,7 мин), не выдерживает ~29 запр./с30 сент. 2026 г., 17:39 UTC
- Держать 30 минНе выдержал13,4 запр./с, p95 400 мс, ошибки 0%30 сент. 2026 г., 18:10 UTC
- Держать 1 чВыдержал13,6 запр./с, p95 400 мс, ошибки 0%30 сент. 2026 г., 18:42 UTC
- Держать 3 чНе выдержал13,5 запр./с, p95 400 мс, ошибки 0%30 сент. 2026 г., 19:44 UTC
- Держать 12 чВыдержал13,5 запр./с, p95 400 мс, ошибки 0,03%30 сент. 2026 г., 23:34 UTC
На 13,4 запр./с в течение 30 минут магазин держал стабильную пропускную способность и ответил на всё, но у шагов «Выбор доставки», «Оформление заказа» p95 доходил до 2 с при границе 1,5 с: SLO прогона не достигнут. Границу не удержали 2 из 4 длинных прогонов на этой скорости, поэтому соблюдение SLO на ней не подтверждено.
Что мы видели на своих серверах
Этого в отчёте нет: магазин наш, поэтому мы видим метрики его хостинга. У своего приложения вы смотрите свои дашборды; CapacityLab измеряет снаружи.
- Приложение (Node.js)1,71 vCPUПик памяти 568 MB
- База данных (PostgreSQL)0,17 vCPUПик памяти 371 MB
- Кэш (Redis)0,01 vCPUПик памяти 24 MB
Сильнее было нагружено приложение: его CPU доходил до 1,71 vCPU, а база данных оставалась на 0,17. Процесс Node.js выполняет JavaScript в одном потоке, поэтому очередь работы оформления заказа к этому потоку — вероятная причина замедления; напрямую мы это не проверяли.
Ни один из 14 935 запросов не закончился ошибкой сервера.
Что делать дальше
- Подтвердить до планов
Запустить нагрузочный тест на 13,6 запр./с на 30 минут: поиск советует подтвердить эту скорость следующей, и только подтверждение покажет, держит ли каждый шаг свою границу.
- Смотреть на свою сторону во время прогона
Держите открытыми свои дашборды. Отчёт говорит, какой шаг замедлился; ваши метрики — почему.
- Изменить одно и сравнить
После изменения повторите тот же тест и положите два отчёта рядом.
Своя копия этого отчёта — через одну регистрацию
Зарегистрируйтесь по почте. Новый аккаунт откроется с этим и остальными демо-отчётами внутри, чтобы сравнить их со своим первым прогоном.
Откуда эти цифры
Экспортировано из опубликованных отчётов этих прогонов. CPU и память магазина — из метрик Railway, число ошибок — из его собственного журнала доступа.
Идентификаторы и контрольные суммы
| Прогон | Digest результата | Посчитан |
|---|---|---|
cb2d4ac6-406a-49b3-8f17-e5e8d60906e7 | sha256:c23a8169490b2bbf0f1e209f3a1cec23277a487c410d0540e8396f75cdc3e072 | 30 сент. 2026 г., 17:50 UTC |
79157cd2-9038-4fe2-a4b8-babcd3c8f724 | sha256:dbd4acf035860c28a13410334f2022231904059433aae66eede26e800dda5b7c | 30 сент. 2026 г., 18:40 UTC |
950d737d-69cb-444d-aa0d-c98f69ca88c7 | sha256:4e3ae46977a2c2f84492d30b2491a277f2327cfa5e26f09d4238523ab8b5c824 | 30 сент. 2026 г., 19:42 UTC |
3c84f878-b51e-4691-861c-6bbe489777bd | sha256:4fc3848d76d69f6167ff40ef2785e3a296997bc17a0b2ca55ca9975641260416 | 30 сент. 2026 г., 22:44 UTC |
94412fc5-9c3d-4154-8b93-6be8313ee108 | sha256:b9b8ee159f287284e651b3cbe3619b18fb93414a4320ec3143ea86cd8a7591d7 | 1 окт. 2026 г., 11:36 UTC |