Как мы ускорили коробочный Битрикс24: разбираем причины тормозов и показываем, что помогло

от автора

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

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

Почему Битрикс24 начинает тормозить

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

Чаще всего производительность снижается из-за одного или сразу нескольких факторов:

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

  • низкой скорости интернет-соединения при использовании облачного Битрикс24;

  • большого количества расширений и открытых вкладок в браузере;

  • переполненных корпоративных чатов;

  • большого числа сотрудников, одновременно работающих на портале;

  • неудачных доработок, из-за которых появляются тяжелые запросы к базе данных;

  • сложных и сильно разветвленных бизнес-процессов.

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

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

В чём была проблема

Искать причину решили не вслепую. Сначала проверили показатели встроенного Монитора производительности, затем подключили инструменты для анализа — модуль Bitrix.xDebug из Маркетплейса и Perflog от независимых разработчиков. После этого начали разбирать работу отдельных модулей и изучать, где именно возникает основная нагрузка.

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

Почему большие чаты так тормозят систему

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

Разберём, что происходит, когда один из участников отправляет сообщение.

После нажатия кнопки «Отправить» Битрикс24 передаёт событие в Push & Pull — сервер, через который пользователи получают новые сообщения, уведомления, события календаря и другие обновления в режиме реального времени.

Сначала Push & Pull рассылает уведомление о новом сообщении всем участникам чата. Количество таких уведомлений напрямую зависит от числа пользователей.

После того как сообщение прочитано, Push & Pull снова рассылает событие всем участникам. Именно поэтому в интерфейсе появляются отметки о прочтении.

На этом этапе и возникает основная нагрузка. Количество уведомлений о прочтении умножается на число пользователей, которые открыли сообщение. Если в чате активно общаются более 200 сотрудников, система может обработать от нескольких сотен тысяч до 1 млрд событий «Прочитано».

Аналогичный механизм используется и в модуле «Задачи и проекты».

В результате серверу приходится обрабатывать огромный поток событий. При высокой нагрузке даже мощный многоядерный сервер, на котором работает коробочный Битрикс24, начинает работать с задержками, а в критических случаях пользователи могут столкнуться с ошибкой 502 Bad Gateway.

Признаки, что Битрикс24 нуждается в оптимизации

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

  • Страницы начинают открываться заметно дольше обычного. Появляется постоянный спиннер загрузки, а календарь, CRM, BI-конструктор и другие разделы могут загружаться по 10–20 секунд или вообще перестают отвечать.

  • Корпоративный чат начинает зависать. Иногда достаточно отправить одно сообщение, чтобы получить ошибку 502 Bad Gateway.

  • Пользователей периодически разлогинивает, и им приходится повторно проходить авторизацию.

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

Как ускорить Битрикс24

Обычно начинаем с самого простого — перезагрузки сервера. Иногда проблема решается уже на этом этапе. Перезагрузка очищает оперативную память от накопившихся данных и позволяет исключить временные сбои. Команда зависит от дистрибутива Linux, на котором работает Битрикс24.

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

Отдельно нужно сказать про корпоративные чаты. Полностью удалить неактуальные переписки штатными средствами Битрикс24 нельзя — их можно только скрыть. При этом сами данные продолжают храниться, занимают место и со временем начинают влиять на производительность.

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

Заодно проверяем еще несколько вещей:

  • отключить неиспользуемые модули;

  • сократить количество полей в стандартных отчетах;

  • выполнить оптимизацию базы данных средствами используемой СУБД;

  • пересмотреть настройки кэширования;

  • сжать изображения, если они занимают слишком много места.

Если и после этого производительность остается низкой, скорее всего, проблема уже не в настройках, а в самой архитектуре. В таком случае имеет смысл разнести основные компоненты системы по разным серверам: Push & Pull, базу данных и сам коробочный Битрикс24. Такой подход не только повышает производительность, но и упрощает дальнейшее масштабирование.

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

Что сделали мы: меры оптимизации 

Основную нагрузку в нашем случае создавали корпоративные чаты, поэтому начали именно с них.

Первым делом установили модуль «Управление чатами» от интегратора «Пуск». С его помощью очистили неактуальные сообщения, в том числе в закрытых чатах. Скорость очистки составляла до 500 сообщений в минуту.

Следующим этапом частично перенесли кэш из оперативной памяти в файловую систему. Это позволило снизить нагрузку на систему в периоды пиковой активности пользователей.

После этого развернули отдельный сервер очередей Push & Pull на выделенном сервере. В результате обработка очередей была отделена от основного сервера Битрикс24, что упростило дальнейшее масштабирование и повысило стабильность работы корпоративного мессенджера по мере роста количества активных чатов.

Этапы оптимизации портала Битрикс24 

Мы не пытались решить проблему одним действием. Сначала устранили самые очевидные причины, затем перешли к бизнес-процессам и чатам, а уже после этого вынесли Push & Pull на отдельный сервер. После каждого этапа проверяли, как меняется поведение портала под нагрузкой. 

Работу выстроили в такой последовательности:

  1. Перезапустили основной сервер.

  2. Выполнили дефрагментацию базы данных.

  3. Проверили бизнес-процессы, удалили неиспользуемые поля и упростили часть связей.

  4. Очистили корпоративные чаты от неактуальных сообщений и бесед.

  5. Вынесли Push & Pull на отдельный сервер.

  6. Провели техническое обслуживание оборудования.

  7. Повторно запустили систему и проверили ее работу под нагрузкой.

Такой подход позволил сразу видеть, какие изменения действительно влияют на производительность. 

Вместо заключения

Когда портал начинает тормозить, первое желание — добавить процессоры, память или перенести систему на более мощный сервер. Иногда это действительно может помочь.

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

Этот случай еще раз показал, что проблемы с производительностью коробочного Битрикс24 далеко не всегда связаны с нехваткой ресурсов. Прежде чем менять оборудование, имеет смысл разобраться, что именно создает нагрузку. Во многих случаях этого достаточно, чтобы вернуть порталу нормальную скорость работы без дорогостоящего обновления инфраструктуры. 

ссылка на оригинал статьи https://habr.com/ru/articles/1065002/