Top.Mail.Ru
РБК Компании

Почему сайт медленный при «нормальном» сервере — разбор от бстд

Эксперт агентства BrandStudio разбирает, как лишние запросы к базе данных, отсутствие индексов и кеша замедляют сайт — и что проверить до апгрейда серверов
Почему сайт медленный при «нормальном» сервере — разбор от бстд
Источник изображения: Istockphoto.com
Эрнест Бархударян
Эрнест Бархударян
Технический директор

17 лет в IT, 10 в e-commerce. Ex eCommerce CTO Много Мебели, СTO бстд.

Подробнее про эксперта

Когда сайт медленный, первое желание клиента — усилить сервер. Но если метрики по железу выглядят спокойно, а скорость все равно падает, значит узкое место, скорее всего, в логике приложения: лишние запросы, неправильные выборки, отсутствие индексов, нет кеширования. Ниже — разбор типовой ситуации и пошаговый чек-лист о том, с чего начать диагностику.

Симптомы: сервер «держится», а сайт — нет

В такой ситуации все начинается одинаково: пользователи жалуются на медленный каталог, фильтры, поиск или карточку товара. Команда смотрит на мониторинг — CPU и память не в красной зоне, диски и сеть без аномалий, «пожара» на инфраструктуре нет. Но время ответа растет, а в пиковые моменты интерфейс начинает подвисать.

Это как раз тот случай, когда менять железо — не лучший первый шаг. Если система тратит ресурсы неэффективно, более мощный сервер просто позволит ей чуть дольше «делать лишнее», но не решит саму проблему.

Где обычно находится проблема

В большинстве таких историй узкое место оказывается на стороне приложения и данных:

  • система делает слишком много обращений к базе данных на один пользовательский сценарий;
  • запросы построены так, что база вынуждена читать слишком много строк;
  • нет индексов под реальные сценарии поиска и фильтрации;
  • отсутствует кеширование, и одни и те же данные пересчитываются заново;
  • есть лишние обращения к внешним сервисам (аналитика, рекомендации, интеграции), которые срабатывают слишком часто.

Типовая ошибка: десятки обращений к базе на один сценарий

Один из самых частых триггеров — момент, когда на один запрос к каталогу приходится десятки запросов к базе данных. Пример из практики: мы видели сценарий, где каждый запрос к каталогу вызывал 47 обращений к БД, и работа была устроена так, что данные подтягивались по одному товару.

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

Почему проблема проявляется только на больших каталогах

На малых объемах стоимость ошибки скрыта: когда товаров сотня, «вытянуть данные поштучно» получается без проблем — база быстро отдает ответы, сеть не перегружена. Когда каталог вырастает до десятков тысяч позиций, каждый лишний запрос превращается в очередь:

  • растет суммарное время на сетевые обмены запрос–ответ между приложением и базой данных;
  • база чаще уходит в тяжелые операции чтения;
  • увеличивается конкуренция за ресурсы между запросами;
  • появляются пики задержек и деградация интерфейса.

Что мы в BrandStudio меняем: от запросов до индексов

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

1) Оптимизируем запросы

Основная задача — сократить количество обращений к базе данных и перестроить выборки так, чтобы данные отдавались пакетно. В ранее упомянутом сценарии количество запросов удалось сократить с 47 до 3 на тот же пользовательский шаг.

2) Добавляем кеширование

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

3) Настраиваем индексы

Если индексы не соответствуют реальным запросам (поиск, фильтры, сортировки), база начинает «пробираться» по данным слишком долго. Правильные индексы резко снижают стоимость выборок на больших объемах.

4) Убираем лишние обращения при каждом клике

Иногда тормоза создает «фоновая» логика: дополнительные проверки, лишние запросы за сопутствующими данными, обращения к внешним сервисам, которые не нужны в реальном времени. Их важно найти и убрать, либо вынести в асинхронный режим.

Почему индексы критичны для скорости

Индексы — это способ быстро находить нужные данные. Это работает как оглавление в книге: с ним вы сразу переходите к нужной главе, а без него приходится долго и упорно листать.

На больших каталогах индексы необходимы. Даже при мощном сервере их отсутствие приводит к тому, что база делает больше работы, чем нужно, а система теряет время на каждом запросе.

Результат в цифрах

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

Чеклист: что проверить, если сервер «нормальный», а сайт медленный

  • Где именно тормозит: какие страницы/действия (каталог, поиск, фильтры, карточка, корзина) и в какие моменты (пики, акции, вечерние часы).
  • Сколько действий нужно системе на один шаг пользователя: нет ли ситуации, когда на один экран приходится десятки внутренних обращений (это частая причина «медленно, но сервер не перегружен»).
  • Как система работает с каталогом и данными: не построена ли логика так, что данные подтягиваются «по одной позиции», вместо того чтобы брать их пакетом.
  • Есть ли кеширование: запоминает ли система часто используемые данные или каждый раз считает все заново.
  • Настроена ли база данных под реальные сценарии: индексы и оптимизация под поиск, фильтры, сортировки.

Интересное:

Новости отрасли:

Все новости:

Публикация компании

Профиль

Дата регистрации
5 февраля 2013
Уставной капитал
180 000,00 ₽
Юридический адрес
г. Москва, вн.тер.г. Муниципальный округ Даниловский, ул. Самаринская, д. 1, помещ. 4/1
ОГРН
1137746083166
ИНН
7725781604
КПП
772501001
Среднесписочная численность
26 сотрудников

Контакты

Адрес
Россия, г. Москва, ул. Академика Миллионщикова, д. 20а
Телефон

Социальные сети

ГлавноеЭкспертыДобавить
новость
КейсыМероприятия