Торговля
Ускорение работы интернет-магазина на БУС
Задачи
→ Найти узкие места в текущей инфраструктуре и локализовать причины деградации производительности.
→ Устранить задержки на уровне СУБД MySQL.
→ Модернизировать стек веб-сервера и бэкенда для стабильной работы под нагрузкой.
→ Перенести проект на обновленную конфигурацию без остановки работы сайта.
Проблема и вызов
Проект клиента регулярно сталкивался со сбоями в часы пиковой посещаемости.
При резком наплыве пользователей серверные ресурсы исчерпывались, страницы переставали открываться, а база данных переставала справляться с потоком входящих запросов и уходила в таймаут.
Причина крылась в устаревшем технологическом стеке: связка Nginx с бэкендом на Apache создавала избыточный оверхед по памяти и процессору на каждый клиентский процесс, а СУБД MySQL работала со стандартными параметрами без учета специфики тяжелых запросов.
Бизнесу требовалось оперативно стабилизировать сервис и устранить узкие места до того, как очередная волна трафика приведет к простою.
Что было сделано
1. Аудит инфраструктуры и профилирование
Наши инженеры провели глубокий аудит серверной конфигурации и выявили слабые звенья:
- Проанализировали журнал медленных запросов MySQL (slow query log), определили неоптимальные индексы и параметры буферов памяти.
- Зафиксировали узкие места связки Nginx + Apache: создание тяжелых процессов Apache под нагрузкой быстро приводило к утилизации всей доступной оперативной памяти.
2. Смена архитектуры бэкенда: переход на Docker и PHP-FPM
Вместо классического Apache архитектуру мы перевели на современный, легковесный стек:
- Все компоненты приложения упаковали в Docker-контейнеры, изолировав окружение и упростив дальнейшее масштабирование.
- Заменили модуль Apache на связку Nginx + PHP-FPM. Nginx взял на себя быструю отдачу статики и буферизацию соединений, а пул воркеров PHP-FPM обеспечил эффективную обработку динамических скриптов с минимальным потреблением оперативной памяти.
3. Тюнинг СУБД и бесшовный перенос
- Выполнили кастомную оптимизацию конфигурации MySQL: скорректировали размеры пула буферов (InnoDB buffer pool), лимиты соединений и параметры кэширования под реальные профили нагрузки проекта.
- Развернули новую инфраструктуру параллельно с работающей, синхронизировали базы данных и переключили трафик. На всем протяжении работ доступность сервиса оставалась непрерывной (SLA выше 98%).
Результаты
→ Ликвидированы падения при всплесках трафика. Переход на Docker и PHP-FPM снизил накладные расходы сервера: проект стабильно держит пиковые нагрузки без зависаний и очередей запросов.
→ Ускорены ответы базы данных. Тюнинг параметров MySQL и устранение задержек ввода-вывода позволили сократить время выполнения тяжелых запросов.
→ Гибкость и готовность к росту. Контейнеризированная архитектура исключила проблемы с зависимостями и подготовила проект к быстрому развертыванию новых версий и горизонтальному масштабированию.