Авторизация
Сброс пароля
Как мы снизили нагрузку на сервер интернет-магазина в 2 раза
Заказчик: Пан Чемодан
Рассказываем, как снизили нагрузку на сервер и увеличили скорость загрузки корзины интернет-магазина.
1. Вводная задача от заказчика, проблематика, цели
«Пан Чемодан» уже 20 лет на рынке мужских и женских сумок и чемоданов. Сейчас в России открыто 62 бутика.
У клиента возникла проблема: из-за высокой нагрузки на сервер сайт работал медленно — в первую очередь корзина. Для пользователей интернет-магазина это означало сложности с оформлением заказа. Для клиента — падение продаж.
Задача
Снизить нагрузку на сервер и увеличить скорость загрузки корзины.
2. Описание реализации кейса и творческого пути по поиску оптимального решения
Предыстория
Клиент подключил программу лояльности, которая генерирует десятки тысяч купонов — сервер и платформа 1С-Битрикс не потянули такую нагрузку.
Проблему надо было решать на системном уровне: снизить нагрузку на сервер и увеличить скорость загрузки корзины.
Что сделали
1 этап. Технический аудит
Сперва провели комплексный аудит с помощью сервиса GTmetrix и внутренних инструментов для отладки, то есть обнаружения причин ошибки. Проанализировали полученные данные и выявили:
- Стандартный функционал не справляется с запросами на полмиллиона купонов в базе, которые рассчитывают скидку при каждой операции.
- Есть проблемы с настройками кеширования в компонентах. У части компонентов неоптимальное значение времени жизни кеша, остальные компоненты не кешируют данные вовсе.
- Запросы к базе данных некорректны — нет условий или ограничений выборки либо запросы в цикле.
- Реализация скриптов импорта каталога неэффективна. Конструкции в коде потребляют слишком много серверных ресурсов.
2 этап. Работы по оптимизации сервера
1. Провели нагрузочное тестирование сервера, чтобы получить точные данные для дальнейшей работы. Для замеров использовали Apache Benchmark. Он показал время ответа сервера при большом количестве запросов — от 2 до 5 секунд.
2. Использовали модуль логирования, чтобы покрыть бекенд проекта таймерами исполнения. Так мы поняли, какие места в коде нужно оптимизировать.
3. Доработали кеширование в проекте, чтобы информация на страницах быстро и регулярно обновлялась. Для этого оптимизировали время хранения кэша и настроили кэширование там, где его не было.
4. Отрефакторили код и оптимизировали запросы к базе внутри компонентов. Это увеличило скорость генерации страниц и уменьшило нагрузку на сервер.
5. Доработали логику подсчета скидки в стандартных компонентах Битрикса — сделали подзапросы купонам и скидкам только на тех страницах, где это нужно. До этого компонент с купонами выводился на всех страницах сайта и лишний раз перегружал сервер.
3. Результаты сотрудничества
- После того как мы оптимизировали чекаут (страницы оформления заказа), нагрузка установилась на уровне 1,7 секунды без пиковых значений.
- Посещаемость чекаута увеличилась на 25%.
- При нарастающем трафике время ответа сервера уменьшилось в 2 раза. Оно не превышает 2 секунд даже при пиковых нагрузках во время праздников и акций.
- Время ответа сервера всего сайта снизилось на 30%. С 1,6 секунды до 1,1.
- Скорость работы компонентов каталога возросла на 18%.
- Количество обработанных запросов в секунду выросло на 50%.
Григорий Яффа
e-commerce директор, «Пан Чемодан»
Самое главное, что мы хотели получить, — это упрощение дальнейшего развития. А для этого нам нужно было избавиться от всего старого и ненужного. Плюс, значительно улучшить текущие показатели.
Сайт начинал откровенно тормозить в самые неподходящие моменты. Это доставляло неудобства пользователям, а мы теряли потенциальные заказы. Люди нервничали, мы нервничали. Никому это не нравилось.
После мягкого перезапуска результаты стали заметны сразу.
Сначала я даже не мог поверить, что это случилось, и мысленно продолжал искать какой-то подвох. А его не было.
Звонили знакомые и коллеги, говорили: «Ой, как у вас все быстро работает».
Покупателям этот факт тоже определенно понравился. Конверсии медленно, но верно поползли наверх. Приятным дополнением оказалось повышение позиций в поисковой выдаче.
Приятной неожиданностью стал факт оперативности поддержки. Мы можем писать вечером, по выходным или 31 декабря. И всегда почти моментально получаем ответ.
Отдельное спасибо хочу сказать нашему аккаунту Ирине Мигуновой. За профессионализм. За умение полностью интегрироваться в бизнес заказчика. И за простоту в общении. Многим коллегам по цеху следовало бы у нее поучиться.
После оптимизации чекаута нагрузка установилась на уровне 1,7 секунды, а посещаемость — увеличилась на 25%.
Изменения скорости загрузки страниц сайта после оптимизации.
Скорость работы компонентов каталога возросла на 18%.
4. Заключение
Продолжаем работать и решать задачи клиента.