Битрикс 24 грузит процессор

Обновлено: 02.07.2024

Издатель: Integrator.Digital

К нам обратился клиент с проблемой, что у него портал на Битрикс24 с завидной регулярностью виснет минут на 10, то есть в это время Битрикс24 не грузится вообще, просто крутится бесконечная загрузка в браузере. При этом, если руками на сервере перезапустить MySQL сервер, то всё начинает работать.

Так как налицо явное зависание MySQL сервера, предположили, что проблема связана с какими-то большими запросами, которые подвешивают весь сервер. Для того, чтобы такие запросы выявить, надо включить медленные логи MySQL.

Для этого в файле /etc/my.cnf в разделе [mysqld] надо добавить следующие строки:

После чего перезапустить сервер:

После этого надо дождаться, когда произойдут зависания, после чего поискать эти зависания в логах, например, вот так:

Должно выдать в конце списка пункты с самым большим временем:

Затем копируем любое значение и ищем в файле с помощью поиска, и находим, что это был за запрос.

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

Модуль бизнес процессы в административной части Битрикс24

Настройка времени хранения логов модуля бизнес процессы в административной части Битрикс24

Затем надо найти этого агента в списке агентов по адресу /bitrix/admin/agent_list.php, например, задав в поиске название модуля, в нашем случае это модуль bizproc.

Поиск нужного агента в административной части Битрикс24

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

Настройка временного интервала работы агента в административной части Битрикс24

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

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

Чтобы очистить записи логов бизнес-процессов в таблице, надо выполнить следующую команду:

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

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

К сожалению, очень часто от пользователей битрикса можно слышать о том, что эта система требует много ресурсов и тормозит. Рассмотрим наиболее вероятные причины, по которым битрикс может тормозить:

  1. Кеширование отключено или неправильно настроено, отсутствие CDN, композитного сайта.
  2. Ошибки программирования: «тяжелые» запросы к базе данных, которые не кешируются и выполняются на каждом хите, ошибки при написании php-кода.
  3. Использование различных конструкторов, модулей битрикса, позволяющим менять содержимое инфоблоков и упрощающим настройку вывода информации
  4. Недостаточно ресурсов на сервере.
  5. Объемный html, выдаваемый системой, ошибки верстки, большие изображения.

Кеширование отключено или неправильно настроено.
Для ускорения работы компонентов битрикс использует систему кеширования. Если она правильно настроена, компонент, за редким исключением, не должен отправлять запросы к БД.
Если вы авторизованы, то на панели вверху сайта можно включить режим отладки:

17052018_1.jpg

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

Ускорить работу битрикс

В идеале, количество запросов к БД должно быть близко к 0.
Очень часто в процессе разработки программисты сознательно отключают кеширование компонентов, проверить это можно здесь: рабочий стол – настройки продукта – автокеширование

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

Битрикс тормозит

Ускорить работу битрикс

Также, при наличии лицензии битрикс вам доступно ускорение CDN. Суть этой технологии заключается в том, что статические компоненты вашего сайта (изображения, css, js файлы) сохраняются в сети CDN и при обращении выдаются с сервера, наиболее удобного в данный момент. За счет этого сайт загружается быстрее. Еще вам доступна технология "композитный сайт", запатентованная Бтриксом. Её смысл таков: статическая часть сайта, включая html, кешируется и открывается мгновенно.

Ошибки программирования


В данном случае можно говорить о том, что на сайте явно допущены ошибки в проектировании, но сервер более-менее справляется, обработав более 1200 запросов к БД за 1,88 сек. Для снижения количества запросов к базе данных необходимо оптимизировать код сайта, на предмет ошибок в программировании. Бывают такие случаи, что в цикл попадает вызов запроса, повторяясь при каждой итерации, такого нужно избегать.

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

Использование различных конструкторов
Часто пользователи устанавливают конструкторы, предоставляющие "готовый сайт". При неправильной установке, к сожалению, такие решения выдают огромное количество запросов, сильно тормозят. В этом случае решаем вопрос путем загрузки отдельных областей сайта через ajax. Как правило, можно сразу наблюдать значительное ускорение. После оптимизации все вопросы к хостингу часто отпадают сами по себе.

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

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

В этой статье мы расскажем, как оптимизировать крупный проект в «Битрикс24» и увеличить его производительность в 3 раза, изменяя настройки MySQL и режим питания CPU.


Корпоративный портал в «Битрикс24», рассчитанный на несколько сотен пользователей, c

300 Гб файлов и

80 Гб БД на выделенном сервере с BitrixVM.

До изменения настроек показатели были следующими:


Стандартный тест производительности в панели администратора «Битрикс»

Из всех параметров стоит обратить особое внимание на работу с MySQL и «Конфигурацию PHP». Именно эти показатели особенно важны для нас, так как они косвенно отражают уровень производительности проекта.

Запрос клиента

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

Решение

Настройки MySQL — первое, с чем мы начинаем работать.

Заменим стандартные значения BitrixVM на:


Следующий шаг — изменим режим питания CPU, так как «Битрикс» любит большую частоту процессора.

В зависимости от количества ядер меняем в каждом
файле /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor powersave на performance.

Далее проверим результат:


Мы видим, что больше всего изменилась работа с MySQL: параметры “запись” и “изменение” выросли почти в 3 раза; показатель “чтение” вырос в 5 раз. Это значит, что при обращении сайта к базе данных этот тип операции будет выполняться в несколько раз быстрее. Как следствие, вырастет и общая производительность сайта.

Из-за изменения режима питания CPU (это возможно, так как используется выделенный сервер) увеличилось количество операций на CPU.

Теперь необходимо отредактировать настройки для OPcache.

В файле /etc/php.d/10-opcache.ini заменяем его исходное значение на:


Примечание: Тест «Битрикс» сообщит вам, что параметр opcache.revalidate_freq должен иметь значение 0 а не 1, но с указанным нами он будет работать лучше.

Сам параметр opcache.revalidate_freq отвечает за проверку кеша: при значении 0 она выполняется каждый раз при запуске скрипта, а при значении 1 — раз в секунду.

После изменения настроек проверяем результат:


Из таблицы следует, что показатель работы с MySQL еще немного вырос. В то же время операции на CPU и общая производительность «Битрикс» увеличились значительно за счет изменения настроек PHP и кеширования скриптов.

Вывод

Благодаря таким несложным изменениям в настройках, мы смогли увеличить производительность проекта в 3 раза, а взаимодействие с БД — от 3 до 5 раз (на основании общей оценки теста «Битрикс»). Работой проекта на новом сервере наш клиент полностью доволен. We did it!

В данном способе оптимизации мы сделали акцент на основных моментах, с которыми взаимодействует «Битрикс», а также на сам тест. Клиенты часто обращают внимание именно на него.

Среди других способов повышения производительности «Битрикс» можно назвать установку и настройку кеширующего сервиса (например, Redis). Показатель производительности в CMS может упасть, но общая работа сайта должна быть лучше. Кроме того, можно использовать php-fpm, но в нашем случае переделывать ОС, изначально настроенную под «Битрикс», было бы нерационально.

Также можно еще поиграться с настройками MySQL. Они индивидуальны для каждого проекта и конфигурации, поэтому единого идеального рецепта не существует. Будет интересно узнать ваши лайфхаки по оптимизации проектов в «Битрикс». Делитесь мнением в комментариях.

В связи с участившимися жалобами о производительности Bitrix и его показателях, мы решили показать наглядно работу Bitrix на web-окружении BitrixVM и панелью управления ISPmanager 5.

Также прочтите обязательно нашу статью о влиянии показателей производительности битрикса на реальную скорость загрузки сайта!

Установить BitrixVM вместе с ISPmanager нет возможности по причине конфликта пакетов, поэтому мы провели тесты отдельно.

Тестирование на BitrixVM

Основные параметры тестирования:

Т.к BitrixVM позиционируется как оптимальное решение для CMS Bitrix, будем отталкивался от его показателей.

ПО, которое было изначально при установке BitrixVM

Видим, что производительность в BitrixVM выше, чем эталон*. Проверим отклик сервера через GooglePageSpeed:

*Эталоном называется виртуальная машина с 256 Мб ОЗУ, работающая на одном процессоре.

Производительность BitrixVM для мобильных Производительность BitrixVM для ПК

Видим, что показатели Bitrix и его скорость работы на BitrixVM выше, чем эталон от разработчиков. Но нам необходимо сравнить скорость работы Bitrix, который будет установлен в панели управлении ISPmanager 5.

Тестирование на ISPmanager 5

ПО, которые было установлено при установке сервера с ISPmanager 5:

  • MariaDB 10.3
  • PHP 5.6-7.3
  • Apache (Nginx + Apache)

Тестирование в режиме php 5.6 + Apache

Тестирование в режиме php 5.6 + Apache

Видим, что производительность ниже, чем Эталон. Это связано с устаревшей версий php. Проверим отклик сайта через GoogleSpeed

Тестирование для мобильных в режиме php 5.6 + Apache Тестирование для ПК в режиме php 5.6 + Apache

Т.к ПО уже устарело и рекомендованная версия php для Bitrix PHP 7.1, мы протестируем работу сайта и на ней:

Тестирование для ПК в режиме php 7.1 + Apache Тестирование для мобильных php 7.1 + режим работы Apache Тестирование для ПК (php 7.1 + режим работы Apache)

Видим, что при такой версии php, производительность Bitrix выше, чем на BitrixVM, при этом, отклик сайта больше. Мы также решили протестировать версию php 7.3:

Тестирование Битрикс php 7.3 + режим работы Apache Тестирование Биткис для мобильных php 7.3 + режим работы Apache Тестирование Битрикс для для ПК (php 7.3 + режим работы Apache)

Видно, что производительность больше в 2 раза относительно BitrixVM, но при этом отклик сайта больше.

Сейчас мы протестируем работу сайта при режиме работы Nginx + PHP-fpm. Тестировать php5.6 мы уже не будем, а сразу приступим к тестированию php 7.1.

Снова видим, что производительность Bitrix больше, чем на BitriVM, но при этом отклик сайта немного больше. Протестируем работу сайта при версии php 7.3:

Тестирование Битрикс php 7.3 + режим работы FastCGI Тестирование Битрикс для мобильных (php 7.3 + режим работы FastCGI) Тестирование Битрикс для ПК (php 7.3 + режим работы FastCGI)

После тестирования видно, что производительность Bitrix больше на режиме работы FastCGI (nginx + php-fpm), и отклик сервера примерно такой же, как на BitrxiVM.

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

  1. Не будет работать файл .htaccess
  2. Для сайта на Bitrix, необходим будет редирект nginx, чтобы все странички работали, т.к если не приписать такой редирект, страницы будут отдавать 404 ошибку.

Сравнение отклика сервера для платформы пк:

ПКВремя загрузки первого контентаИндекс скорости загрузкиВремя загрузки для взаимодействияВремя загрузки достаточной части контентаВремя окончания работы ЦПВремя окончания работы ЦП
PHP 7.1 (BitrixVM)1.0 сек1.2 сек1.4 сек1.1 сек1.1 сек50 мс
PHP 7.1 (Apache)1.0 сек1.4 сек1.4 сек1.2 сек1.2 сек70 мс
PHP 7.1 (FastCGI)1.0 сек1.4 сек1.5 сек1.0 сек1.2 сек80 мс
PHP 7.3 (Apache)1.0 сек1.3 сек1.4 сек1.2 сек1.2 сек50 мс
PHP 7.3 (FastCGI)1.0 сек1.2 сек1.4 сек1.0 сек1.1 сек70 мс

Сравнение отклика сервера для мобильной платформы:

мобильнаяВремя загрузки первого контентаИндекс скорости загрузкиВремя загрузки для взаимодействияВремя загрузки достаточной части контентаВремя окончания работы ЦПВремя окончания работы ЦП
PHP 7.1 (BitrixVM)3.3 сек3.8 сек6.3 сек3.3 сек4.7 сек230 мс
PHP 7.1 (Apache)3.4 сек3.7 сек6.7 сек3.4 сек5.1 сек270 мс
PHP 7.1 (FastCGI)3.4 сек3.6 сек6.7 сек3.4 сек5.2 сек260 мс
PHP 7.3 (Apache)3.4 сек3.8 сек6.7 сек3.4 сек5.1 сек250 мс
PHP 7.3 (FastCGI)3.4 сек3.5 сек6.6 сек3.4 сек5.1 сек220 мс

Сравнение производительности Bitrix:

PHPПроизводительность Bitrix
PHP 5.6 (Apache)8.76
PHP 7.1 (BitrixVM)41.25
PHP 7.1 (Apache)55.35
PHP 7.3 (Apache)90.54
PHP 7.1 (FastCGI)93.95
PHP 7.3 (FastCGI)161

Вывод:

После проведенных тестов мы можем сделать вывод, что режим работы FastCGI работает быстрее чем Apache, но при этом для корректной работы сайта на FastCGI необходимо настраивать и оптимизировать работу сервера.

Мы предлагаем нашим клиентам оптимальные тарифы VPS серверов для BitrixVM и всегда следим за производительностью системы.

Читайте также: