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

«Пан Чемодан» уже 20 лет на рынке мужских и женских сумок и чемоданов. Сейчас в России открыто 62 бутика.

У клиента возникла проблема: из-за высокой нагрузки на сервер сайт работал медленно — в первую очередь корзина. Для пользователей интернет-магазина это означало сложности с оформлением заказа. Для клиента — падение продаж.

Отзыв клиента

Предыстория

Клиент подключил программу лояльности, которая генерирует десятки тысяч купонов — сервер и платформа 1С-Битрикс не потянули такую нагрузку.

Проблему надо было решать на системном уровне: снизить нагрузку на сервер и увеличить скорость загрузки корзины.

Что сделали

1 этап. Технический аудит

Сперва провели комплексный аудит с помощью сервиса GTmetrix и внутренних инструментов для отладки, то есть обнаружения причин ошибки. Проанализировали полученные данные и выявили:

  • Стандартный функционал не справляется с запросами на полмиллиона купонов в базе, которые рассчитывают скидку при каждой операции.
  • Есть проблемы с настройками кеширования в компонентах. У части компонентов неоптимальное значение времени жизни кеша, остальные компоненты не кешируют данные вовсе.
  • Запросы к базе данных некорректны — нет условий или ограничений выборки либо запросы в цикле.
  • Реализация скриптов импорта каталога неэффективна. Конструкции в коде потребляют слишком много серверных ресурсов.

2 этап. Работы по оптимизации сервера

  1. Провели нагрузочное тестирование сервера, чтобы получить точные данные для дальнейшей работы. Для замеров использовали Apache Benchmark. Он показал время ответа сервера при большом количестве запросов — от 2 до 5 секунд.
  2. Использовали модуль логирования, чтобы покрыть бекенд проекта таймерами исполнения. Так мы поняли, какие места в коде нужно оптимизировать.
  3. Доработали кеширование в проекте, чтобы информация на страницах быстро и регулярно обновлялась. Для этого оптимизировали время хранения кэша и настроили кэширование там, где его не было.
  4. Отрефакторили код и оптимизировали запросы к базе внутри компонентов. Это увеличило скорость генерации страниц и уменьшило нагрузку на сервер.
  5. Доработали логику подсчета скидки в стандартных компонентах Битрикса — сделали подзапросы купонам и скидкам только на тех страницах, где это нужно. До этого компонент с купонами выводился на всех страницах сайта и лишний раз перегружал сервер.

Что в результате

После того как мы оптимизировали чекаут (страницы оформления заказа), нагрузка установилась на уровне 1,7 секунды без пиковых значений.

Изображение

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

Изображение

Отзыв клиента

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

Изображение

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

Изображение

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

Изображение

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

Изображение

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

Вот так было:

Изображение

Вот так стало:

Изображение

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

До:

Изображение

После:

Изображение

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

До:

Изображение

После:

Изображение

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

Изображение
Зелёный свет?

Разработка и развитие интернет-магазинов

Мы помогаем увеличивать выручку интернет-магазинов за счет быстрой и отлаженной аутсорс-разработки, рекламы и аналитики.

16

лет работы

150+

проектов

100%

команды
в штате

90%

клиентов с нами
дольше 3 лет

Начать проект