Обсудить проект

Пан Чемодан: Снизили нагрузку на сервер в 2 раза

Оптимизировали бэкенд интернет‑магазина «Пан Чемодан» на 1С‑Битрикс: время ответа сервера упало в 2 раза, чекаут стабил…

LifestyleРазработкаКоманда разработки
x2
снижение нагрузки на сервер при росте трафика

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. Работы по оптимизации сервера

  1. Нагрузочное тестирование. С помощью Apache Benchmark — инструмента, который имитирует большое количество одновременных запросов к серверу, — получили базовые замеры. Время ответа на пике колебалось от 2 до 5 секунд.
  2. Логирование с таймерами. Подключили модуль логирования и покрыли бэкенд таймерами исполнения. Это показало, в каких именно местах кода уходит время.
  3. Доработка кеширования. Оптимизировали время хранения кеша, настроили его там, где раньше его не было. Страницы стали быстро и регулярно обновляться без лишних обращений к базе.
  4. Рефакторинг кода и SQL‑запросов. Переписали запросы к базе внутри компонентов: добавили условия и ограничения выборки, вынесли часть запросов из циклов. Это ускорило генерацию страниц и сняло лишнюю нагрузку с сервера.
  5. Логика подсчёта скидки. Доработали стандартные компоненты Битрикса так, чтобы подзапросы по купонам и скидкам шли только на тех страницах, где они реально нужны. Раньше компонент с купонами выводился на всех страницах сайта и лишний раз грузил сервер.

Результат

После того как мы оптимизировали чекаут (страницы оформления заказа), нагрузка установилась на уровне 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

Ссылки

Расскажите о задаче —
мы предложим решение

Ответим в течение дня. Предложение и оценку подготовим за 2 рабочих дня.

Обсудить проект
@ecom_team

Следите за новостями компании, событиями, кейсами и трендами e‑commerce.

Команда Intensa обсуждает e-commerce проект