SRE-аудит
CI/CD
Инфраструктура

Как увеличили производительность и снизили косты в Ekonika

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

Какие задачи были?

  1. Обеспечение бесперебойной работы сайта во время распродажи.
  2. Перенос базы данных и сайта на новый сервер.
  3. Снижение расходов за счет переезда с двух серверов на один.
  4. Выявление различий между характеристиками старых и нового серверов, включая процессоры с меньшей частотой на новом сервере.
  5. Оценить производительность Битрикса на новом сервере с меньшей частотой процессоров, но большим количеством ядер.

Решение

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

Процесс работ

В этом кейсе мы провели 4 итерации нагрузочного тестирования и поработали с инфраструктурой клиента, чтобы увеличить пропускную способность и стабильность сайта.

Для первой итерации нагрузочного тестирования за основу взяли лог запросов к серверу, а именно к динамическим PHP-страницам. При этом уже при небольших показателях RPS (запросов в секунду) скорость работы сайта значительно снижалась.

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

  1. Одним из самых главных факторов, сдерживающих скорость работы сайта, являлось использование внешнего сервиса geoip, который медленно отвечал на запросы.
  2. Большое количество времени занимало обращение к директории с сессиями.

Проблему с сервисом geoip передали разработчикам, сами же перешли к инфраструктурным работам.

План по инфраструктурным работам

  1. Настроить новый сервер как ноду для масштабирования на время акции.
  2. Подготовить конфигурационные файлы для балансировки запросов к сайту между двумя нодами.
  3. На новом сервере протестировать другие, более быстрые способы хранения сессий.
frame
frame

Итоги первой итерации

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

Сначала настроили новый сервер, потом создали локальную сеть между ним и остальными серверами, включили репликацию файлов и баз данных.

Далее настроили хранение сессий в memcached, настроили новый сервер для принятия трафика, отбалансировали SQL-запросы, добавили возможность чтения со slave.

frame
frame

Проведенные работы

В процессе инфраструктурных работ мы провели ещё несколько итераций нагрузочного тестирования.

  1. Первую параллельно с настройкой БД и нового сервера.
  2. Вторую после создания тестового виртуального хоста, на котором уже была включена балансировка WEB и SQL запросов.
  3. Закончив работы, провели ряд тестов, поправили настройки opcache и начали получать очень приличные показатели запросов в секунду, которые выдерживала новая система.

После тестирования работы сайта на тестовом vhost, было исправлено:

  • оформление заказа в 1 клик;
  • получение СМС;
  • отображение остатков.

После чего балансировка была включена на основной сайт и проведено финальное тестирование. Оно выявило ошибки CDN, которые мы тоже исправили.

Схема работы проекта после

Результат

Пропускная способность сайта увеличилась более чем в 18 раз с возможностью горизонтально масштабировать вычислительные ресурсы и выдерживать ещё больше трафика.

Новый сервер настроили для обработки скриптов при балансировке запросов.

Команда проекта

Сервис менеджер
Инцидент менеджер
Системный администратор
Готовы обсудить проект?

Ответим на заявку в ближайшие 24 часа. А еще мы можем проконсультировать вас по телефону +7 800 555-91-99, электронной почте info@itsumma.ru или в Telegram-чате.

Свяжитесь со мной здесь
Свяжитесь со мной здесь
❗️Имя не может быть пустым
❗️Телефон не может быть пустым
❗️Email не может быть пустым