Ускорение тормозящего интернет-магазина на Битрикс
Крупный магазин на Битрикс тормозил: корзина открывалась 6,5–13,5 секунды, swap упирался в 99%. Через слой local-override без правок ядра ускорили корзину почти в 34 раза и сняли нагрузку с сервера.
Задача
Крупный интернет-магазин на Битрикс заметно тормозил. Страница корзины открывалась 6,5–13,5 секунды, разделы каталога вешали тяжёлые SQL-запросы, оперативной памяти сервера не хватало — использование swap скакало почти до 100%, и мониторинг регулярно алёртил. Всё это на живом магазине с постоянным трафиком, где нельзя было позволить себе простой и нельзя было трогать ядро Битрикса.
Что было
- Корзина открывалась до 13 секунд: почти всё время «съедал» один компонент, который на странице корзины пересчитывал лишние данные заказа.
- Страницы разделов каждый раз выполняли по два тяжёлых JOIN ради цен, которые уже были посчитаны фоновым агентом, но никем не читались.
- Память сервера была на пределе: использование swap доходило до 99%, что тормозило вообще всё.
- Фоновые агенты Битрикса работали в «хитовом» режиме — нагружали каждый пользовательский запрос.
Что сделали
- Все правки — через слой local-override, без единой модификации ядра: обновления Битрикса переживаются без потери доработок.
- На странице корзины отключили расчёт данных, которые там не нужны (службы доставки и платёжки считаются на шаге оформления) — тяжёлый вызов ушёл.
- Цены разделов стали читаться из уже посчитанных полей вместо двух JOIN на каждый показ страницы.
- Перевели фоновые агенты Битрикса со «хитового» режима на штатный cron — нагрузка ушла со страниц пользователей.
- Донастроили Apache и MySQL через override-слои, чтобы память сервера перестала уходить в swap.
Что получилось
- Открытие корзины ускорилось с 6,5 секунды до 0,19 секунды внутри компонента — почти в 34 раза.
- 1888 страниц разделов (76% каталога) перестали выполнять тяжёлые JOIN на каждый показ.
- Использование swap упало с 99% практически до нуля — сервер перестал упираться в память.
- Всё это без простоя магазина и без правок ядра — доработки живут в отдельном слое.
Имя клиента не раскрывается по NDA. Реальные имена и подробности обсуждаем в брифе.
Похожая задача?
Опишите кратко — за 1–2 дня вернёмся с разбором и оценкой по часам. Если решение тиражное — честно скажем.