СMS Битрикс — Производительность. Кто прав — кто виноват?

В данном топике я бы хотел обсудить до боли частую проблему с клиентами, которые используют CMS Битрикс на хостинге, VPS или выделенном сервере.

Многие из этих клиентов частенько обращают внимание на один встроенный модуль под названием «Панель производительности«.  Вот о нем и пойдет сегодня речь.

panel

К сожалению, многие владельцы CMS Битрикс думают, что данный показатель является эталоном и показывает скорость загрузки сайта, качество хостинга или VPS сервера, на котором размещен сайт. НО это не так.

Даже сами разработчики CMS Битрикса утверждают, что это не так.

Официальный ответ от компании Битрикс:

answer

В связи с вышесказанным, пожалуйста, не оценивайте качество CMS хостинга данным тестом.

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

Как оказалось, абсолютно все показатели не взаимозависимы. К примеру, мы искусственно понижали/повышали показатель «Файловая система» от 5000 до 35000 единиц. Результат — показатель производительности не меняется.

Аналогичная ситуация с почтовой системой и другими показателями. Что интересно, очень сильно влияет на конечный показатель выполнение требований от самого битрикса, а именно включение php кеширования, отключение open_basedir и изменения других директив для PHP. Как оказалось, показатель мог меняться в 2-4 раза. Что еще более интересно, на конечную скорость загрузки это практически не влияло. Мы решили удостовериться в этом опытным путем и использовали внешние сервисы тестирования скорости загрузки сайта, чтобы исключить все факторы, которые могут искажать результат. Как оказалось, это практически не влияет на результат.

Так что же такое  «Панель производительности» для Битрикса?

Все разъяснения есть на сайте CMS битрикс — http://dev.1c-bitrix.ru/community/blogs/howto/2450.php

Но, мы также повторимся:

Эта цифра — есть величина, обратная времени исполнения ядра продукта [среднему на 10 измерений]. 

Другими словами, ядро может даже не делать запросы к БД и в принципе не грузить статику. Оно абсолютно не коррелируется со скоростью загрузки сайта.

Конечно же, нам стало интересно, как можно проверить скорость загрузки ядра напрямую. К сожалению, тут даже техподдержка битрикса не смогла нам ответить, как это можно сделать. Если Вы включите «режим отладки», то увидите, что создается постоянно разное количество запросов как к БД, так и к самому ядру, что очень странно.

Видимо, одному Богу известно, как оно грузится.

Напоследок, мы решили провести обширное тестирование на серверах с разной мощностью. На всех серверах было одинаковое ПО, но разные процессоры, объем памяти, диски.

Итак, есть 3 сервера:

1) Битрикс производительность — 10 баллов (проблемный, но самый мощный)
2) Битрикс производительность — 30 баллов (Самый слабый)
3) Битрикс производительность — 30-40 баллов (Средний )

Далее, мы решили проверить корреляцию загрузки 3-х сайтов (главной страницы) с использованием режима отладки:

otladka

Результаты видны в левом нижнем углу:

results

1) 0.31 сек
2) 0.23 сек
3) 0.24 сек

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

Что это означает?

Это означает, что данный тест не покажет Вам, какую нагрузку выдержит данный сервер. Он в принципе не покажет Вам ничего полезного…

Наши рекомендации:

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

  1. Включение «композитного режима».
  2. Включение кеширования для статики, если хостингом это не предусмотрено. У нас кеширование статики включено по-умолчанию на всех хостинг серверах.
  3. Включение кеширования php, html.
  4. Хранение сессий в кеше.
  5. Оптимизация БД.
  6. Сжатие картинок на сайте. Помимо стандартного сжатия через nginx не забывайте также оптимизировать сам размер Ваших статических файлов.

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

Также не забудьте, что мы предлагаем оптимизированный хостинг для Битрикса.