Выдержит тот же магазин больше или меньше, когда данных стало много?

Интернет-магазин с большим каталогом

Не держит первую ступень

Не выдерживает даже ~31 запр./с

Не прошли проверки: Поиск: ошибок 3,8 % > 1 %.

Не выдерживает
~31запр./с

Проверено 4 из 12 шагов на этой скорости; 8 не проверены — мало замеров (< 100 в окне)

  • Выбор доставки
  • Оформление заказа
  • Добавить в корзину
  • Начало оплаты
  • Платёжная сессия
  • Регион магазина
  • Способы доставки
  • Адрес доставки

ступени по 1,6–5 мин · проверки: 106 прошли, 37 не прошли, 17 — мало данных, 0 не выполнялись · подано 100 % плана · здоровье генераторов не подтверждено

Синтетическая нагрузка снаружи; реальный трафик и метрики ваших серверов сюда не входят.

Что делать дальше

  1. Дальше искать между 6 и ~31 запр./с.

50 000 товаров, 150 000 покупателей и 100 000 заказов: магазин после нескольких насыщенных лет.

Пример: настоящий прогон CapacityLab против магазина, который мы держим сами

Как проводился тест

Где лежит предел

Каждая точка — скорость, на которой магазин держали не меньше полутора минут. Она пройдена, если каждый шаг визита с достаточной выборкой держит p95 в границе задержки и ошибок меньше 1%; редкий шаг оформления с малой выборкой на этой скорости показан как отсутствующий, а не как пройденный.

Держит22,5 запр./сЛомается к30,7 запр./сПредел лежит между ними
  • Выдержал 30 мин18 запр./с
  • Выдержал 60 мин18 запр./с
  • Выдержал 180 мин18 запр./с
  • Выдержал 720 мин18 запр./с
Замедлился первым
Поиск
Граница задержки
p95 ≤ 1,5 с

План против факта

Поиск поднимается по лестнице скоростей. На каждой ступени генераторы подавали запланированную скорость; столбики — сколько магазин на самом деле ответил, и его p95 на этой ступени.

02040608001 s2 sp95 ≤ 1,5 с для каждого шага7,112,722,530,739,24050,164План, запр./с
ПланФактp95 (правая шкала)
ПланФактp95ОшибкиИтог
7,17,2300 мс0%Выдержал
12,712,4300 мс0%Выдержал
22,522,4300 мс0,06%Выдержал
30,731,3300 мс0,43%Сломался
39,238,3300 мс1,31%Сломался
4038,9400 мс1,55%Сломался
50,146,6300 мс2,45%Сломался
6459,8400 мс3,84%Сломался
Почему 30,7 запр./с не выдержал
  • Поиск: 3,79% запросов с ошибкой при допустимых 1%.
Почему 39,2 запр./с не выдержал
  • Весь визит: 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 мс

Держит ли дольше

Поиск предела находит его за минуты. Длинные прогоны ниже предела показывают, держит ли магазин дальше: утечки, очереди и холодные кэши проявляются не сразу.

  1. Найти пределПредел найден — предварительноДержит ~22 запр./с на коротких ступенях (3,9 мин), не выдерживает ~40 запр./с30 сент. 2026 г., 18:10 UTC
  2. Уточнить пределНе держит первую ступеньНе выдерживает даже ~31 запр./с30 сент. 2026 г., 18:28 UTC
  3. Держать 30 минВыдержал18 запр./с, p95 300 мс, ошибки 0,02%30 сент. 2026 г., 18:45 UTC
  4. Держать 1 чВыдержал17,9 запр./с, p95 300 мс, ошибки 0,01%30 сент. 2026 г., 19:17 UTC
  5. Держать 3 чВыдержал18 запр./с, p95 300 мс, ошибки 0,01%30 сент. 2026 г., 20:19 UTC
  6. Держать 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 запросов закончились ошибкой сервера.

Что делать дальше

  1. Подтвердить до планов

    Запустить нагрузочный тест на 18 запр./с на 30 минут: поиск советует подтвердить эту скорость следующей, и только подтверждение покажет, держит ли каждый шаг свою границу.

  2. Смотреть на свою сторону во время прогона

    Держите открытыми свои дашборды. Отчёт говорит, какой шаг замедлился; ваши метрики — почему.

  3. Изменить одно и сравнить

    После изменения повторите тот же тест и положите два отчёта рядом.

Своя копия этого отчёта — через одну регистрацию

Зарегистрируйтесь по почте. Новый аккаунт откроется с этим и остальными демо-отчётами внутри, чтобы сравнить их со своим первым прогоном.

Открыть этот отчёт в своём аккаунте Регистрация бесплатная. Отчёт уже будет в новом аккаунте, а на первый собственный прогон — $5 кредитов.

Откуда эти цифры

Экспортировано из опубликованных отчётов этих прогонов. CPU и память магазина — из метрик Railway, число ошибок — из его собственного журнала доступа.

Идентификаторы и контрольные суммы
ПрогонDigest результатаПосчитан
ed28262a-e4b5-4278-81c7-a128b8d93712sha256:f244ee250ef0881cbc9b18f94ed9669f754c7cb2d7bae9a3a4ca9d755319030c30 сент. 2026 г., 18:26 UTC
2e4332f9-ae3e-4671-8f7c-240db5241ffesha256:a96f20e5a623c4ffeb0d1cc6ce0efef8136c2f20a9f116d66567a9b74045896d30 сент. 2026 г., 18:43 UTC
0d9584f6-edec-4fb1-95d9-8c97ffd80f3dsha256:ca759ad76b672bd41c422f75c5a9099ce6de33f4b0078d7a18278062944d58e630 сент. 2026 г., 19:15 UTC
ee309538-e5a6-46c8-9233-4383d609f1e4sha256:82170146a1ad7806827c18ef7c9383f880c93fb18bb36809d81b452508ac40c230 сент. 2026 г., 20:17 UTC
ae153ca1-e87c-44a5-8838-c6ee075c680dsha256:7cf98c58b3d23a60ae0884f9b194a9d2d2e33a70e28e662276ce467978861b9130 сент. 2026 г., 23:20 UTC
918006d2-92ac-4850-bd14-127a2480bc2bsha256:922be0f52c767948a9975074b2b8b95f24c287123c11dd1e6bba7bd944932cb01 окт. 2026 г., 11:39 UTC