БесплатноБесплатный прототип ключевой страницы и черновик ТЗ при старте проекта

Как подготовить магазин к нагрузке в распродажу (чёрная пятница)

Подготовка интернет-магазина на 1С-Битрикс к пиковой нагрузке в распродажу

Чёрная пятница — это когда за один вечер приходит трафик целого месяца, и магазин либо зарабатывает годовую выручку, либо ложится на самом интересном месте. И обиднее всего, что падает он предсказуемо: узкие места были известны заранее, просто до них «не дошли руки». Распродажа не прощает импровизации — она усиливает любую слабость архитектуры в десятки раз.

Хорошая новость в том, что подготовка магазина на 1С-Битрикс к пику — это набор понятных, проверяемых шагов, а не магия. В статье разберём, что именно ломается под нагрузкой, как снять её композитом и кэшем, где узкое место база и обмен с 1С, зачем нужно нагрузочное тестирование и как защитить оформление заказа. Системную подготовку инфраструктуры и учётной части мы закрываем услугой аудита и оптимизации 1С.

Коротко

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

Что именно ломается в пик

Первый шаг к устойчивости — понимать, что именно не выдерживает нагрузку. Вопреки интуиции, чаще всего падает не отдача страниц каталога, а тяжёлые динамические операции, которые идут в обход кэша и напрямую нагружают PHP и базу данных.

Каталог и карточки товара обычно спасает композит и кэширование — они отдаются почти без нагрузки. А вот транзакционная часть и база становятся бутылочным горлышком, и готовить их надо прицельно.

С чего начать: измерить, а не гадать

Подготовку начинают не с «включить кэш побольше», а с измерений. Пока вы не знаете реальный предел системы и её узкие места, любые улучшения — это стрельба вслепую.

  1. Соберите метрики. Время ответа страниц, нагрузка на CPU и базу, медленные запросы, статистика монитора производительности Битрикса.
  2. Найдите тяжёлые страницы. Определите, что генерируется дольше всего и чаще всего вызывается.
  3. Оцените ожидаемый пик. Возьмите прошлый трафик распродаж и заложите рост.
  4. Зафиксируйте базовую линию. Текущие показатели — чтобы понимать эффект от каждого изменения.

На этом этапе часто вскрываются проблемы не в коде сайта, а в данных и обмене: разросшиеся справочники, тяжёлые выгрузки, неоптимальные свойства товаров. Их лечит аудит и оптимизация 1С ещё до того, как трафик вырастет.

Слои кэширования ускоряют ответ БраузерзапросCDN / кэшготовый ответКомпозиткэш страницБазатолько при промахеБольшинство запросов отдаётся из кэша, до базы доходят единицы
Схема: между браузером и базой стоят слои кэша (CDN, композит). Большинство запросов отдаётся мгновенно из кэша, а до базы доходят единицы — сайт держит нагрузку.

Композит: снимаем нагрузку с каталога

Композитный сайт — базовая мера для витрины. Он делит страницу на статическую часть (кэшируется и отдаётся мгновенно почти без участия PHP) и динамическую (корзина, цена клиента, персональные блоки), которая догружается отдельным запросом. Для каталога и карточек товара это радикально снижает нагрузку в пик.

Важно понимать границу композита. Он ускоряет страницы каталога, но не оформление заказа и корзину — эти операции всегда динамические. Поэтому композит обязателен, но недостаточен: параллельно готовят базу, кэш и транзакционные сценарии.

Как правильно настроить композит, что выносить в динамику и как не сломать персонализацию — подробно в отдельном материале про композитный сайт на Битрикс. Здесь важно другое: композит должен быть включён и проверен заранее, а не «в ночь перед».

Кэширование: уровни и инвалидация

Кэш — главный инструмент масштабирования на Битриксе, и работать он должен на всех уровнях. Задача — чтобы под нагрузкой большинство запросов обслуживалось из кэша, а не пересчитывалось заново.

УровеньЧто кэшируетРиск в пик
Кэш компонентовКаталог, меню, блокиСлишком короткий TTL — частый пересчёт
Управляемый кэшВыборки с тегами инвалидацииМассовая инвалидация при обмене
HTML-кэш / композитГотовые страницыНе покрывает динамику
Хранилище кэшаMemcached / Redis вместо файловФайловый кэш не тянет пик

Отдельная опасность — инвалидация кэша в момент обмена с 1С: массовое обновление товаров сбрасывает кэш, и в пик система начинает пересчитывать всё разом. Поэтому обмен в час пик душат, а кэш держат в быстром хранилище (Memcached или Redis), а не в файлах. Как устроено окружение под это — в материале про хостинг и инфраструктуру на BitrixVM.

База данных как узкое место

Когда кэш настроен, следующим падает база — именно в неё бьют некэшируемые операции: корзина, оформление, авторизация. Подготовка базы к пику включает несколько направлений.

Писать выборки под нагрузку лучше на D7-ORM: она даёт контроль над запросами, выбором нужных полей и кэшированием результатов. Подробнее — в статье про D7 и ORM в Битрикс.

Highload-блоки и тяжёлые данные

Если у вас большие объёмы однотипных данных — характеристики, справочники, история, — их место в highload-блоках, а не в свойствах инфоблоков. Highload-блоки спроектированы под большие таблицы и высокую нагрузку чтения, поэтому в пик они ведут себя предсказуемее.

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

Инфраструктура и веб-кластер

Когда софт оптимизирован, упираются в железо. Здесь два пути, и выбор между ними делают по результатам нагрузочного теста, а не «на всякий случай».

Веб-кластер 1С-Битрикс поддерживает распределение нагрузки, но требует правильной настройки общего кэша, сессий и синхронизации. Это серьёзная работа, которую делают заранее и обязательно тестируют. Про надёжное окружение и запас по ресурсам — материал про хостинг и инфраструктуру на BitrixVM.

Обмен с 1С и агенты в пик

Одна из самых частых причин падения в час пик — тяжёлый обмен с 1С, запущенный не вовремя. Полная выгрузка каталога или большая пачка заказов конкурирует за ресурсы с покупателями именно тогда, когда их максимум.

  1. Переведите обмен в щадящий режим. Реже, меньшими порциями, в непиковые окна.
  2. Обновляйте критичное точечно. Остатки — прицельно, а не полной переиндексацией каталога.
  3. Накапливайте заказы. Выгрузка в 1С пачками в спокойные часы, а не по каждому заказу в пик.
  4. Ревизуйте агентов. Переведите агенты «на хите» на cron, тяжёлые задачи отложите на ночь, лишние отключите.

Стабильность самой учётной части — тоже часть подготовки: если 1С не справляется с выгрузкой, это бьёт по сайту. Эту зону закрывает автоматизация продаж и склада на 1С.

Защита корзины и оформления заказа

Оформление заказа — самое ценное и самое уязвимое место. Под всплеском трафика здесь возникают дубли, зависшие заказы и потерянные оплаты. Задача — сделать оформление идемпотентным и устойчивым.

Тема надёжности оформления и оплаты настолько важна, что заслуживает отдельного разбора — как защититься от дублей и потерь при всплеске, мы разбираем в материалах про безопасность внешних вызовов, например про REST, вебхуки и безопасность.

Нагрузочное тестирование

Всё, что описано выше, проверяется одним способом — нагрузочным тестом. Без него вы не знаете реальный предел системы и лишь надеетесь на запас. Тест на реалистичном сценарии показывает, при какой нагрузке система деградирует и что именно падает первым.

Хороший тест воспроизводит поведение живых покупателей: просмотр каталога, применение фильтра, добавление в корзину, авторизация и оформление заказа — в пропорциях, близких к реальным. Нагрузку поднимают ступенями до предела, фиксируют, где начинается деградация, устраняют узкое место и прогоняют снова. Один прогон — не тест: важна итеративность, «нашли — починили — перепроверили».

План на день распродажи

Даже подготовленная система требует плана на сам день. Импровизация в пик стоит дорого.

Безопасный процесс выкатки и отката помогает и здесь — как его выстроить, в материале про CI/CD и деплой в Битрикс.

Частые ошибки

Чек-лист готовности

  1. Метрики собраны. Известны тяжёлые страницы, узкие места и ожидаемый пик.
  2. Композит включён и проверен. Витрина отдаётся из кэша, динамика догружается корректно.
  3. Кэш в быстром хранилище. Memcached/Redis, разумные TTL, контролируемая инвалидация.
  4. База оптимизирована. Медленные запросы устранены, индексы на месте, таблицы почищены.
  5. Инфраструктура масштабирована. Ресурсов хватает по результатам теста; при необходимости — веб-кластер.
  6. Обмен и агенты усмирены. Обмен с 1С в щадящем режиме, агенты на cron и вне пика.
  7. Оформление защищено. Идемпотентность, очередь для внешних вызовов, обработка ошибок оплаты.
  8. Нагрузочный тест пройден. Прогон на реалистичном сценарии, узкие места устранены и перепроверены.
  9. План на день готов. Дежурство, мониторинг, заморозка, откат, свежий бэкап.

Вывод

Магазин на 1С-Битрикс выдерживает распродажу не благодаря «мощному серверу», а благодаря подготовке: измеренным узким местам, включённому композиту, кэшу в быстром хранилище, оптимизированной базе, усмирённому обмену с 1С и защищённому оформлению заказа. Каждая из этих мер закрывает конкретную причину падения, и все вместе они дают запас прочности.

Главное правило — готовиться заранее и проверять нагрузочным тестом, а не надеждой. Дайте себе 4–6 недель, найдите предел системы, устраните узкие места и прогоните всё повторно. Тогда чёрная пятница станет лучшим днём года по выручке, а не по инцидентам. А фундамент устойчивости — здоровый обмен и учёт — держится на автоматизации на 1С.

Частые вопросы

За сколько до распродажи начинать подготовку магазина к нагрузке?

Оптимально — за 4–6 недель. Этого времени хватает, чтобы провести нагрузочное тестирование, найти узкие места, включить и проверить композит и кэш, при необходимости масштабировать инфраструктуру и прогнать всё повторно. Подготовка «за пару дней» превращается в тушение пожара: узкие места вскрываются уже под реальным трафиком, когда что-то менять поздно и рискованно.

Что чаще всего кладёт магазин на 1С-Битрикс во время пика?

Чаще всего — не сам фронт каталога, а тяжёлые динамические операции: оформление заказа, добавление в корзину, авторизация и обмен с 1С, которые идут в обход кэша и бьют в базу данных. Плюс агенты и хиты обмена, запущенные в самый пик. Каталог обычно спасает композит и кэширование, а вот транзакционные сценарии и база становятся бутылочным горлышком.

Поможет ли композитный сайт выдержать распродажу?

Композит сильно помогает на страницах каталога и карточках товара: статическая часть отдаётся мгновенно, почти не нагружая PHP и базу, а динамика (корзина, цена клиента) догружается отдельным запросом. Но композит не ускоряет само оформление заказа и корзину — эти операции всегда динамические. Поэтому композит — обязательная, но не единственная мера: параллельно готовят базу, кэш и оформление.

Нужен ли веб-кластер для распродажи или хватит одного сервера?

Зависит от масштаба ожидаемого трафика. Многим магазинам достаточно вертикально усилить один мощный сервер, правильно настроить кэш и композит. Веб-кластер (несколько веб-нод, репликация базы, общий кэш) нужен, когда пик заведомо превышает возможности одного сервера или бизнес не может позволить себе простой. Решение принимают по результатам нагрузочного тестирования, а не «на всякий случай».

Как не сломать обмен с 1С в пик нагрузки?

Обмен с 1С — тяжёлая операция, и запускать полную выгрузку в час пик нельзя. На время распродажи обмен переводят на щадящий режим: реже, меньшими порциями, в непиковые окна, а критичные данные (остатки) — точечно. Заказы при этом накапливаются и выгружаются пачками. Так обмен не конкурирует за ресурсы с покупателями в момент максимального трафика.

Что делать с агентами и cron во время пика?

Агенты, которые ходят «на хите» (при запросе пользователя), в пик особенно опасны — они тормозят обычные страницы. Их переводят на запуск по cron и выносят тяжёлые задачи в непиковые часы. Перед распродажей стоит провести ревизию: какие агенты есть, что они делают, как часто и можно ли отложить их на потом. Лишние и тяжёлые задачи на время пика отключают.

Как защитить оформление заказа от сбоев при всплеске?

Оформление заказа должно быть идемпотентным и устойчивым: повторный клик или ретрай не создаёт дубль заказа, а внешние вызовы (оплата, CRM) не блокируют оформление. Помогают блокировки на уровне сессии/токена оформления, вынос обмена с CRM в очередь и понятная обработка ошибок оплаты. Тогда всплеск трафика приводит к очереди, а не к потерянным и задвоенным заказам.

Обязательно ли нагрузочное тестирование или можно понадеяться на запас?

Нагрузочное тестирование обязательно, если распродажа для бизнеса значимая. Без него вы не знаете реальный предел системы и узкие места — они вскроются под живым трафиком в худший момент. Тест на реалистичном сценарии (каталог, корзина, оформление) показывает, при какой нагрузке система деградирует и что именно падает первым, и даёт время это исправить заранее.

Поделиться:

Готовите магазин к распродаже и боитесь пиковой нагрузки?

Проведём нагрузочное тестирование, настроим композит и кэш, оптимизируем базу и обмен с 1С, защитим оформление заказа. Рассчитаем работу под ваш магазин.

Игорь Воскресенский

Команда B2Bsite. С 2014 года разрабатываем и держим под нагрузкой интернет-магазины на 1С-Битрикс: композит, кэш, веб-кластер, обмен с 1С и подготовка к распродажам.

← Все статьи блога