Выдержит тот же магазин больше или меньше, когда данных стало много?
Интернет-магазин с большим каталогом
Не выдерживает даже ~31 запр./с
Не прошли проверки: Поиск: ошибок 3,8 % > 1 %.
- Не выдерживает
- ~31запр./с
Проверено 4 из 12 шагов на этой скорости; 8 не проверены — мало замеров (< 100 в окне)
- Выбор доставки
- Оформление заказа
- Добавить в корзину
- Начало оплаты
- Платёжная сессия
- Регион магазина
- Способы доставки
- Адрес доставки
ступени по 1,6–5 мин · проверки: 106 прошли, 37 не прошли, 17 — мало данных, 0 не выполнялись · подано 100 % плана · здоровье генераторов не подтверждено
Синтетическая нагрузка снаружи; реальный трафик и метрики ваших серверов сюда не входят.
Что делать дальше
- Дальше искать между 6 и ~31 запр./с.
50 000 товаров, 150 000 покупателей и 100 000 заказов: магазин после нескольких насыщенных лет.
Пример: настоящий прогон CapacityLab против магазина, который мы держим сами
Как проводился тест
Где лежит предел
Каждая точка — скорость, на которой магазин держали не меньше полутора минут. Она пройдена, если каждый шаг визита с достаточной выборкой держит p95 в границе задержки и ошибок меньше 1%; редкий шаг оформления с малой выборкой на этой скорости показан как отсутствующий, а не как пройденный.
- Выдержал 30 мин18 запр./с
- Выдержал 60 мин18 запр./с
- Выдержал 180 мин18 запр./с
- Выдержал 720 мин18 запр./с
- Замедлился первым
- Поиск
- Граница задержки
- p95 ≤ 1,5 с
План против факта
Поиск поднимается по лестнице скоростей. На каждой ступени генераторы подавали запланированную скорость; столбики — сколько магазин на самом деле ответил, и его p95 на этой ступени.
| План | Факт | p95 | Ошибки | Итог |
|---|---|---|---|---|
| 7,1 | 7,2 | 300 мс | 0% | Выдержал |
| 12,7 | 12,4 | 300 мс | 0% | Выдержал |
| 22,5 | 22,4 | 300 мс | 0,06% | Выдержал |
| 30,7 | 31,3 | 300 мс | 0,43% | Сломался |
| 39,2 | 38,3 | 300 мс | 1,31% | Сломался |
| 40 | 38,9 | 400 мс | 1,55% | Сломался |
| 50,1 | 46,6 | 300 мс | 2,45% | Сломался |
| 64 | 59,8 | 400 мс | 3,84% | Сломался |
- Поиск: 3,79% запросов с ошибкой при допустимых 1%.
- Весь визит: 1,31% запросов с ошибкой при допустимых 1%.
- Поиск: 10,9% запросов с ошибкой при допустимых 1%.
- Шагов: 7 визита получили меньше трафика, чем по плану: визиты замедлились и отстали от расписания (минимум 77,8% от плана).
Какой шаг замедлился первым
p95 каждого шага визита на каждой скорости против границы. Шаг, который Result называет ограничивающим, отмечен.
| Шаг визита | Доля | 7,1 запр./с | 12,7 запр./с | 22,5 запр./с | 30,7 запр./с | 39,2 запр./с |
|---|---|---|---|---|---|---|
Регион магазинаGET /store/regions | 2,9% | — | — | 30 мс | — | 50 мс |
КатегорииGET /store/product-categories | 8,6% | — | 30 мс | 30 мс | 50 мс | 50 мс |
КаталогGET /store/products | 29% | 50 мс | 50 мс | 75 мс | 75 мс | 75 мс |
ПоискОграничиваетGET /store/products | 12% | — | 300 мс | 300 мс0,5% ошибок | 400 мс3,8% ошибок | 500 мс11% ошибок |
Карточка товараGET /store/products/{product_id} | 39% | 50 мс | 50 мс | 50 мс | 50 мс | 50 мс |
Добавить в корзинуPOST /store/carts | 2,9% | — | — | 300 мс | — | 400 мс |
Адрес доставки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 мс
Держит ли дольше
Поиск предела находит его за минуты. Длинные прогоны ниже предела показывают, держит ли магазин дальше: утечки, очереди и холодные кэши проявляются не сразу.
- Найти пределПредел найден — предварительноДержит ~22 запр./с на коротких ступенях (3,9 мин), не выдерживает ~40 запр./с30 сент. 2026 г., 18:10 UTC
- Уточнить пределНе держит первую ступеньНе выдерживает даже ~31 запр./с30 сент. 2026 г., 18:28 UTC
- Держать 30 минВыдержал18 запр./с, p95 300 мс, ошибки 0,02%30 сент. 2026 г., 18:45 UTC
- Держать 1 чВыдержал17,9 запр./с, p95 300 мс, ошибки 0,01%30 сент. 2026 г., 19:17 UTC
- Держать 3 чВыдержал18 запр./с, p95 300 мс, ошибки 0,01%30 сент. 2026 г., 20:19 UTC
- Держать 12 чВыдержал18 запр./с, p95 300 мс, ошибки 0,03%30 сент. 2026 г., 23:34 UTC
Что мы видели на своих серверах
Этого в отчёте нет: магазин наш, поэтому мы видим метрики его хостинга. У своего приложения вы смотрите свои дашборды; CapacityLab измеряет снаружи.
- Приложение (Node.js)1,32 vCPUПик памяти 547 MB
- База данных (PostgreSQL)8,03 vCPUПик памяти 2 580 MB
- Кэш (Redis)0,01 vCPUПик памяти 25 MB
Сильнее была нагружена база данных: её CPU доходил до 8,03 vCPU, а приложение оставалось на 1,32. CPU базы не был ограничен, поэтому это показывает, куда ушла работа, а не что база исчерпала ресурс; поиск по такому каталогу — работа базы и вероятное место очереди, но блокировки и планы запросов не измерялись.
915 из 35 927 запросов закончились ошибкой сервера.
Что делать дальше
- Подтвердить до планов
Запустить нагрузочный тест на 18 запр./с на 30 минут: поиск советует подтвердить эту скорость следующей, и только подтверждение покажет, держит ли каждый шаг свою границу.
- Смотреть на свою сторону во время прогона
Держите открытыми свои дашборды. Отчёт говорит, какой шаг замедлился; ваши метрики — почему.
- Изменить одно и сравнить
После изменения повторите тот же тест и положите два отчёта рядом.
Своя копия этого отчёта — через одну регистрацию
Зарегистрируйтесь по почте. Новый аккаунт откроется с этим и остальными демо-отчётами внутри, чтобы сравнить их со своим первым прогоном.
Откуда эти цифры
Экспортировано из опубликованных отчётов этих прогонов. CPU и память магазина — из метрик Railway, число ошибок — из его собственного журнала доступа.
Идентификаторы и контрольные суммы
| Прогон | Digest результата | Посчитан |
|---|---|---|
ed28262a-e4b5-4278-81c7-a128b8d93712 | sha256:f244ee250ef0881cbc9b18f94ed9669f754c7cb2d7bae9a3a4ca9d755319030c | 30 сент. 2026 г., 18:26 UTC |
2e4332f9-ae3e-4671-8f7c-240db5241ffe | sha256:a96f20e5a623c4ffeb0d1cc6ce0efef8136c2f20a9f116d66567a9b74045896d | 30 сент. 2026 г., 18:43 UTC |
0d9584f6-edec-4fb1-95d9-8c97ffd80f3d | sha256:ca759ad76b672bd41c422f75c5a9099ce6de33f4b0078d7a18278062944d58e6 | 30 сент. 2026 г., 19:15 UTC |
ee309538-e5a6-46c8-9233-4383d609f1e4 | sha256:82170146a1ad7806827c18ef7c9383f880c93fb18bb36809d81b452508ac40c2 | 30 сент. 2026 г., 20:17 UTC |
ae153ca1-e87c-44a5-8838-c6ee075c680d | sha256:7cf98c58b3d23a60ae0884f9b194a9d2d2e33a70e28e662276ce467978861b91 | 30 сент. 2026 г., 23:20 UTC |
918006d2-92ac-4850-bd14-127a2480bc2b | sha256:922be0f52c767948a9975074b2b8b95f24c287123c11dd1e6bba7bd944932cb0 | 1 окт. 2026 г., 11:39 UTC |