Маленький каталог
300 товаров и несколько сотен заказов: магазин в первые месяцы работы.
- Держит
- 17 запр./с
- Ломается к
- 28,5 запр./с
- Замедлился первым
- Добавить в корзину
Мы держим open-source приложения на Railway и подаём на них трафик настоящих пользователей. Потом ищем скорость, на которой каждое перестаёт держать обещания. Каждая цифра ниже — из настоящего прогона.
Примеры: настоящие прогоны CapacityLab против приложений, которые мы держим сами
Мы держим open-source магазин (Medusa v2) на Railway и подаём на него трафик настоящих визитов: каталог, поиск, карточка товара, корзина, оплата. Потом ищем скорость, на которой он перестаёт держать обещания.
Каждая колонка — поиск предела. Зелёное — скорость, которую магазин выдержал, удерживая каждый шаг визита в границе задержки; штриховка — где лежит предел; красное — где он сломался. Приложение и его лимиты у магазинов одинаковые, но ресурсы баз данных не ограничены и прогревались по-разному, поэтому колонки сравнивают три наблюдавшиеся конфигурации, а не влияние одного объёма данных.
300 товаров и несколько сотен заказов: магазин в первые месяцы работы.
50 000 товаров, 150 000 покупателей и 100 000 заказов: магазин после нескольких насыщенных лет.
Большой каталог под визитом дня распродажи при постоянной скорости: меньше просмотров, больше корзин и заказов на визит. Это модель состава визита, а не всплеска трафика в день распродажи.
Каждый сценарий подаёт один и тот же вид визита, шаг за шагом, как покупатель идёт по магазину. Столбики — доля шага во всех запросах прогона с маленьким каталогом; визит Чёрной пятницы переносит вес с просмотра на корзины и заказы при постоянной скорости, без всплеска трафика.
GET /store/regions2,88%GET /store/product-categories8,63%GET /store/products28,8%GET /store/products11,5%GET /store/products/{product_id}38,9%POST /store/carts2,88%POST /store/carts/{cart_id}1,44%GET /store/shipping-options1,44%POST /store/carts/{cart_id}/shipping-methods1,44%POST /store/payment-collections0,72%POST /store/payment-collections/{payment_collection_id}/payment-sessions0,72%POST /store/carts/{cart_id}/complete0,72%Мы держим на Railway гео-бэкенд такси: Tile38 хранит живые координаты водителей и открытые заказы, OSRM строит маршруты по дорожному графу Москвы, Photon геокодирует адреса, а перед ними стоит один входной прокси Caddy. 20 000 синтетических водителей ездят по Москве и присылают координаты; между пингами пассажиры ищут машину, получают маршрут и цену, а часть из них заказывает.
Каждая колонка — поиск предела. Зелёное — скорость, которую бэкенд выдержал, удерживая каждый вызов в границе задержки; штриховка — где лежит предел; красное — где он сломался.
20 000 водителей по всей Москве присылают свои координаты; на каждые десять пингов один пассажир ищет машину, и половина пассажиров заказывает.
Вдвое больше пассажиров и втрое больше заказов, чем в обычный вечер. Половина подборов не находит машину рядом и ищет снова в радиусе 4 км, поэтому таблиц времени подачи считается больше.
70% пассажиров стоят в пределах 800 м от стадиона, и 30% пингов приходят от водителей, которые ждут там: одна гео-ячейка принимает большую часть нагрузки.
Каждый тик поездки — водитель присылает свои координаты. Часть тиков ещё и обслуживает пассажира: геокодировать адрес, найти водителей в радиусе 2 км, построить маршрут и цену, проверить спрос в ячейке пассажира и, если он заказывает, получить время подачи от ближайших машин и сохранить заказ. Столбики — доля вызова во всех запросах первого сценария такси; дождь и стадион меняют смесь и то, в какую часть города она приходит.
GET /tile38/SET+fleet+d00001+POINT+55.7558+37.617366,7%GET /photon/api6,67%GET /tile38/NEARBY+fleet+LIMIT+5+POINTS+POINT+55.7558+37.6173+20006,67%GET /osrm/route/v1/driving/37.6173,55.7558;37.5537,55.71586,67%GET /tile38/NEARBY+orders+COUNT+POINT+55.7158+37.5537+10006,67%GET /osrm/table/v1/driving/37.6100,55.7500;37.6200,55.7600;37.6173,55.75583,33%GET /tile38/SET+orders+o0000000000000000+EX+900+POINT+55.7558+37.61733,33%Зарегистрируйтесь по почте. Новый аккаунт откроется с этим и остальными демо-отчётами внутри, чтобы сравнить их со своим первым прогоном.