Пан Чемодан: Снизили нагрузку на сервер в 2 раза
Оптимизировали бэкенд интернет‑магазина «Пан Чемодан» на 1С‑Битрикс: время ответа сервера упало в 2 раза, чекаут стабил…
TL;DR
Оптимизировали бэкенд интернет‑магазина «Пан Чемодан» на 1С‑Битрикс: время ответа сервера упало в 2 раза, чекаут стабилизировался на 1,7 секунды, обработанных запросов в секунду — на 50% больше.
Pitch
К нам пришёл fashion‑ритейлер с 62 бутиками по России и интернет‑магазином на 1С‑Битрикс. Программа лояльности генерировала десятки тысяч купонов — сервер и платформа не справлялись, чекаут тормозил по 2–5 секунд. За несколько месяцев мы провели технический аудит, переписали кеширование, отрефакторили SQL‑запросы и доработали логику расчёта скидок. Нагрузка на сервер снизилась в 2 раза, чекаут стабилизировался на 1,7 секунды даже в пиках, общее время загрузки страницы — минус 35%.
Контекст клиента
«Пан Чемодан» — fashion‑ритейлер с 20‑летней историей, мужские и женские сумки и чемоданы. На момент работ — 62 бутика в России и интернет‑магазин на 1С‑Битрикс.
Задача
У клиента возникла проблема: из‑за высокой нагрузки на сервер сайт работал медленно — в первую очередь корзина. Для пользователей интернет‑магазина это означало сложности с оформлением заказа. Для клиента — падение продаж.
Отзыв клиента
Григорий Яффа, e‑commerce директор «Пан Чемодан»:
Проект активно эволюционировал и развивался с 2016 года. В прошлом году мы столкнулись с новым препятствием — огромным количеством самописного кода, который начал блокировать обновление движка и установку новых модулей. На любую задачу, будь то установка эквайринга от Сбербанка или интеграция сервисов Mindbox, приходилось тратить в разы больше времени. Увеличивалось время загрузки и обработки, усложнялся поиск ошибок в случае возникновения сбоев. Перерабатывать и перезапускать проект с нуля в этот раз мы были не готовы: слишком высокие косты и риски.Поэтому мы искали. Долго и сложно искали нового подрядчика, который сможет не только бесшовно подхватить проект, но и так же бесшовно обновит версию Битрикса, поможет оптимизировать работу всех систем — от фильтров до промокодов.Мы провели огромное количество переговоров, расчетов и встреч, но все, как один, настаивали на полном перезапуске. Единственным исключением стала Intensa, хотя по началу этот вариант тоже неоднократно звучал.
Предыстория
Клиент подключил программу лояльности, которая генерирует десятки тысяч купонов — сервер и платформа 1С‑Битрикс не потянули такую нагрузку. Стандартный функционал каждый раз пересчитывал скидку по полумиллиону купонов в базе, кеширование было настроено неоптимально, запросы к базе шли без ограничений выборки. Проблему надо было решать на системном уровне: снизить нагрузку на сервер и увеличить скорость загрузки корзины.
Что сделали
Этап 1. Технический аудит
Провели комплексный аудит с помощью GTmetrix — сервиса для замера производительности страниц — и внутренних инструментов отладки. По итогам выявили четыре основные проблемы:
- Стандартный функционал Битрикса не справлялся с запросами на полмиллиона купонов в базе, которые рассчитывают скидку при каждой операции.
- У части компонентов кеширование было настроено с неоптимальным временем жизни, у остальных кеширование вообще не работало.
- Запросы к базе данных шли без условий и ограничений выборки, часть — в циклах.
- Скрипты импорта каталога были неэффективными: конструкции в коде потребляли слишком много серверных ресурсов.
Этап 2. Работы по оптимизации сервера
- Нагрузочное тестирование. С помощью Apache Benchmark — инструмента, который имитирует большое количество одновременных запросов к серверу, — получили базовые замеры. Время ответа на пике колебалось от 2 до 5 секунд.
- Логирование с таймерами. Подключили модуль логирования и покрыли бэкенд таймерами исполнения. Это показало, в каких именно местах кода уходит время.
- Доработка кеширования. Оптимизировали время хранения кеша, настроили его там, где раньше его не было. Страницы стали быстро и регулярно обновляться без лишних обращений к базе.
- Рефакторинг кода и SQL‑запросов. Переписали запросы к базе внутри компонентов: добавили условия и ограничения выборки, вынесли часть запросов из циклов. Это ускорило генерацию страниц и сняло лишнюю нагрузку с сервера.
- Логика подсчёта скидки. Доработали стандартные компоненты Битрикса так, чтобы подзапросы по купонам и скидкам шли только на тех страницах, где они реально нужны. Раньше компонент с купонами выводился на всех страницах сайта и лишний раз грузил сервер.
Результат
После того как мы оптимизировали чекаут (страницы оформления заказа), нагрузка установилась на уровне 1,7 секунды без пиковых значений.

Посещаемость чекаута увеличилась на 25%.

При нарастающем трафике время ответа сервера уменьшилось в 2 раза.

Оно не превышает 2 секунд даже при пиковых нагрузках во время праздников и акций.

Общее среднее время загрузки всей страницы вместе с контентом уменьшилось на 35%.

Время ответа сервера всего сайта снизилось на 30% — с 1,6 секунды до 1,1.

Скорость работы компонентов каталога возросла на 18%.
Было:

Стало:

Количество обработанных запросов в секунду выросло на 50%.
До:

После:

Среднее время обработки запроса сократилось на 35%.
До:

После:

Общий итог оптимизации серверной части виден на сводном графике ответа сервера за период с сентября 2019‑го по май 2020‑го.

Отзыв клиента
Григорий Яффа, e‑commerce директор «Пан Чемодан»:
Самое главное, что мы хотели получить, — это упрощение дальнейшего развития. А для этого нам нужно было избавиться от всего старого и ненужного. Плюс, значительно улучшить текущие показатели.Сайт начинал откровенно тормозить в самые неподходящие моменты. Это доставляло неудобства пользователям, а мы теряли потенциальные заказы. Люди нервничали, мы нервничали. Никому это не нравилось.После мягкого перезапуска результаты стали заметны сразу.Сначала я даже не мог поверить, что это случилось, и мысленно продолжал искать какой‑то подвох. А его не было.Звонили знакомые и коллеги, говорили: «Ой, как у вас все быстро работает».Покупателям этот факт тоже определенно понравился. Конверсии медленно, но верно поползли наверх. Приятным дополнением оказалось повышение позиций в поисковой выдаче.Приятной неожиданностью стал факт оперативности поддержки. Мы можем писать вечером, по выходным или 31 декабря. И всегда почти моментально получаем ответ.Отдельное спасибо хочу сказать нашему аккаунту Ирине Мигуновой. За профессионализм. За умение полностью интегрироваться в бизнес заказчика. И за простоту в общении. Многим коллегам по цеху следовало бы у нее поучиться.
Команда
- Кирилл Трофимов — Генеральный директор
- Ирина Мигунова — Менеджер проектов
Технологии
- CMS: 1С‑Битрикс
- Язык: PHP
- Аудит производительности: GTmetrix
- Нагрузочное тестирование: Apache Benchmark
Ссылки
- Публикация: https://intensa.ru/blog/pan‑chemodan‑kak‑my‑snizili‑nagruzku‑na‑server‑v‑2‑raza/
- Сайт клиента: https://panchemodan.ru/