Нагрузочное тестирование сайта на 1С-Битрикс

Обновлено

1С-Битрикс — самая популярная CMS для интернет-магазинов в России, и у неё есть репутация «тяжёлой». На деле сайт на Битриксе может держать тысячи одновременных посетителей, если включены нужные механизмы кэширования и сервер настроен под нагрузку. Проверить, как обстоят дела у вашего сайта, можно нагрузочным тестом — без доступа к серверу и без программиста.

Монитор производительности и нагрузочный тест — не одно и то же

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

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

Почему сайт на Битриксе тормозит под нагрузкой

  • Кэш компонентов выключен или сбрасывается. Тогда каждый заход в каталог — десятки запросов к базе. Бывает, что кэш выключили на время разработки и забыли включить.
  • Не включён композитный сайт. Без него даже одинаковые для всех страницы собираются через PHP для каждого посетителя.
  • Умный фильтр и поиск. Каждое сочетание фильтров — отдельный тяжёлый запрос, и кэшировать их почти бесполезно.
  • Мало процессов PHP. На виртуальном хостинге их часто 5–10. Одновременно обрабатывается столько запросов, остальные ждут в очереди.
  • Агенты на хитах. По умолчанию фоновые задачи (агенты) выполняются во время запросов посетителей и замедляют их. На нагруженном сайте их переводят на cron.
  • Обмен с 1С в рабочее время. Выгрузка каталога сбрасывает кэш и нагружает базу как раз тогда, когда на сайте покупатели.
  • Медленная база данных. MySQL с настройками по умолчанию и без нужных индексов на большом каталоге.

Как проверить сайт на Битриксе

  1. Подтвердите права на сайт. В НагрузкаПро это делается так же, как в Яндекс Вебмастере: DNS-записью, файлом в корне сайта или мета-тегом на главной. В Битриксе мета-тег проще всего добавить в шаблон сайта, файл — загрузить в корень через «Структуру сайта».
  2. Выберите ситуацию. «Небольшой наплыв» — обычный пик; «Распродажа» — резкий всплеск; «Найти предел» — нагрузка растёт, пока сайт не начнёт отказывать.
  3. Запустите тест в часы минимального трафика. Сценарий соберётся сам: главная, каталог, карточки, поиск.
  4. Посмотрите отчёт: сколько посетителей сайт держит уверенно, при какой нагрузке начались проблемы и на каких страницах.

Если сайт закрыт паролем (например, тестовая копия), доступ можно передать в настройках сайта — логин и пароль хранятся в зашифрованном виде.

Что включить и настроить

Кэширование

  • Автокеширование компонентов — «Настройки → Настройки продукта → Автокеширование». Должно быть включено на рабочем сайте.
  • Композитный сайт — «Настройки → Настройки продукта → Композитный сайт». Отдаёт страницы из кэша почти без участия PHP; динамические области (корзина, авторизация) подгружаются отдельно.
  • Кэш в памяти — memcached или Redis вместо файлового кэша, если сервер позволяет.

Сервер

  • Виртуальная машина Битрикса (BitrixVM / BitrixEnv) — готовое окружение с nginx, PHP и MySQL, настроенное под Битрикс. Хорошая отправная точка для VPS.
  • nginx перед Apache или PHP-FPM, чтобы картинки, стили и скрипты отдавались без PHP.
  • OPcache включён и ему хватает памяти — иначе PHP каждый раз заново разбирает файлы.
  • Число процессов PHP-FPM подобрано под память сервера: слишком мало — очередь, слишком много — сервер уходит в подкачку.

Сайт

  • Агенты — на cron, а не на хитах посетителей.
  • Обмен с 1С — ночью или небольшими порциями.
  • Тяжёлые компоненты («похожие товары», «с этим покупают») — с кэшем или на отложенной загрузке.
  • Лишние модули и виджеты, которые грузятся на каждой странице, — отключены.

Как понять, что помогло

Меняйте по одной вещи и повторяйте тест с той же ситуацией: так видно, что именно дало эффект. В НагрузкаПро два прогона можно сравнить рядом — время ответа и предел нагрузки «до» и «после».

Частые вопросы

Чем отличается проверка в «Монитор производительности» Битрикса?

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

Помогает ли композитный сайт под нагрузкой?

Да, для страниц, которые одинаковы для всех посетителей: главная, каталог, карточки. Корзину, личный кабинет и поиск композит не ускоряет.

Нужен ли отдельный сервер для Битрикса?

Для магазина с заметным трафиком — обычно да. На виртуальном хостинге число процессов PHP ограничено, и при наплыве посетители встают в очередь.

Ещё по теме