назад

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

Клиент: интернет-магазин Zabros - Все для рыбалки.

Задание: решить проблему зависания сайта при обмене сайта и формирования выгрузок.

Результат: Стабилизация времени формирования страницы до 0.2 секунды в период обмена или большой нагрузки на сайт.

Клиент столкнулся с достаточно распространенной проблемой всех активно развивающихся интернет-магазинов. Во время выполнения регламентных заданий скорость сайта заметно снижалась, что приводило к потере потенциальных клиентов и снижению рейтинга сайта в поисковой выдаче. Подобная ситуация возникла после увеличения каталога товаров в несколько раз, сейчас каталог начитывает более 50 тысяч товаров и более 50 свойств у каждого товара. Основная нагрузка на сервер возникает при работе фильтров, для ее снижения используется фасетный индекс. Но в процессе выполнения регламентных заданий, таких как обновление каталога, обновление цен и остатков нагрузка на сервер и, в частности, на базу данных сильно возрастает, а в добавок при изменении остатков или добавлении нового товара, фасетный индекс должен так же обновиться. Все это в комплексе приводит к резкому повышению нагрузки на сервер и увеличению времени ответа сервера на запросы клиентов и поисковых роботов.

Что было сделано:

В первую очередь был проведен аудит сервера и сайта для выявления причин снижения быстродействия сайта. На сервер был подключен мониторинг, который отслеживал показатели загруженности сервера по процессор, памяти и дискам. Были настроены метрики и подключены шаблоны мониторинга отдельных служб и страниц сайта, фиксировали скорость ответа сервера и загрузки различный страниц (главная, каталог, карточка товара, фильтрованные страницы каталога), собирали данные о количестве и времени запросов к Nginx, Apache и MySQL.

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

Со стороны сервера были внесены необходимые изменения в настройки для снижения нагрузки, изменен баланс ресурсов для PHP и MySQL. Регламентные задания были разнесены по времени таким образом что бы во время наибольшей посещаемости сайта задания не выполнялись. Дополнительно было сформировано задание для разработчиков изменить процедуру обмена и формирования фасетного индекса. Что в результате снизило среднее время ответа сервера с 2.2 секунды до 0.2 секунды.