Ускорение работы коробочного портала Битрикс24 на Windows 10, RedOS 7 и RedOS 8
Скорость работы портала Битрикс24 — критически важный параметр для многих компаний. Особенно это касается коробочного Битрикс24, который работает не на оптимизированных облачных серверах, а на оборудовании компании-пользователя. При использовании «коробки» нужно очень внимательно подходить к оптимизации и настройке ИТ-инфраструктуры, потому что иначе можно столкнуться с проблемами в работе Битрикс24.
Один из наших крупных клиентов попал именно в такую ситуацию. Битрикс24 использовался в закрытом контуре, был интегрирован с другими системами и сервисами, а на ПК сотрудников использовались разные операционные системы: Windows 10, RedOS 7 и RedOS 8. В итоге Битрикс24 работал слишком медленно, и перед нами поставили задачу — ускорить работу портала.
Как мы оптимизировали работу Битрикс24
Сначала мы проводили множество замеров скорости загрузки главной страницы портала и скорости работы различных его компонентов. Выяснив, где находятся все узкие места, мы приступили к поискам решений.
Первым успехом было сокращение времени первоначальной загрузки на 5-6 секунд за счет оптимизации LDAP-авторизации. На операционной системе Windows среднее время загрузки главной страницы после оптимизации составило 7 секунд.
На RedOS 7 также время загрузки сократилось на 5 секунд, но общий показатель оставался на уровне 12-13 секунд, что было неприемлемо для заказчика.
Разбираясь, в чем проблема, мы выяснили, что к увеличению времени загрузки на RedOS 7 приводило использование локального кэша браузера. Звучит странно, ведь кэш наоборот должен ускорять загрузку, но имеем то, что имеем. Для решения этой проблемы был разработан и внедрен скрипт, выполняющий очистку локального кэша при первом запуске портала исключительно в среде RedOS. Благодаря этому время загрузки на RedOS 7 снизилось до показателей, сопоставимых с Windows.
При этом на рабочем месте под управлением RedOS 8 применение нашего скрипта не привело к положительному результату. Разбираемся дальше.

Оказалось, что причиной медленной загрузки на RedOS является то, что некоторые пользователи не выключают компьютер несколько дней или даже недель, а переводят его в ждущий режим. Что при длительном простое, например ночью, вызывает гибернацию RedOS.
В конфигурационных файлах RedOS установлены параметры, которые позволяет использовать системе самый жесткий режим гибернации, который обеспечивает полный «холодный старт». Система фактически загружает сохраненный образ работы поверх обычного старта (загрузка ядра, драйверов, сетевых служб), что создает дополнительную нагрузку и конфликты инициализаций кэшей.
Пока пользователь работает с порталом, браузер хранит данные (стили, скрипты, картинки, видео и т. д.) в ОЗУ компьютера для ускорения, так как скорость записи/чтения в ОЗУ намного быстрее, чем на ПЗУ.
Но если пользователь пытается загрузить портал после гибернации, в которую компьютер на RedOS переходит сам, длительность загрузки портала увеличивается в 2-3 раза, то есть с 5 до 15 секунд. Это происходит потому, что в режиме гибернации данные из ОЗУ копируются на физический носитель. И при загрузке портала после гибернации происходит полная загрузка системы, как после включения рабочей станции, и одновременно восстановление дампа ОЗУ.
Ядро загружает сохраненное состояние поверх только что инициализированной системы, что накладывает дополнительную нагрузку на систему и возникает проблема с инициализацией кэша браузера. Таким образом загрузка данных портала происходит дольше, чем загрузка без кэша браузера.
А на RedOS 7 после гибернации загрузка портала медленнее, чем на RedOS 8 на 3-4 секунды. На Windows 10 такой проблемы нет.
По итогу разброс по скорости загрузки получился такой:
-
Загрузка портала с данными Memory cache (ОЗУ) — 4-5 секунд.
-
Загрузка портала без кэша — 6-7 секунд.
-
Загрузка портала после выхода из гибернации — 15-20 секунд.
Для ускорения загрузки портала мы первым делом оптимизировали главную страницу, что дало уменьшение времени загрузки примерно на 3 секунды. Однако переработка главной страницы сама по себе не решила проблему медленной загрузки данных с диска после выхода из гибернации на системе RedOS. Со стороны портала Битрикс24 нет возможности повлиять на работу браузера и тем более на работу операционной системы.
В конфигурационном файле RedOS /sys/power/state.conf были разрешены все варианты гибернации «freeze mem disk», и в файле /etc/systemd/sleep.conf параметры «AllowSuspend=yes» и «HibernateMode=shutdown», что позволяет использовать системе самый жесткий режим гибернации, который обеспечивает полный запуск системы с нуля. Система фактически загружает сохраненный образ работы поверх обычного старта, что создает дополнительную нагрузку и конфликты инициализаций кэшей.
Для решения этой проблемы нужно использовать другой режим гибернации на RedOS или по возможности игнорировать кэш после гибернации.

В целом для ускорения загрузки портала Битрикс24 мы:
-
Оптимизировали обработчики событий, выполняемых в процессе сборки страницы.
-
Сократили количество запросов к базе данных, необходимых для формирования главной страницы.
-
Подключили композитное кэширование для главной страницы. При повторном обращении страница загружается из кэша в течение приблизительно одной секунды.
-
Настроили хранение сессий и кэша в Redis.
-
Уточнили и скорректировали параметры подключения к Active Directory.
-
Оптимизировали процедуру LDAP-авторизации.
-
Настроили очистку локального кэша при первом запуске в среде RedOS.
Все это довело время загрузки главной страницы портала Битрикс24 до приемлемого уровня. Работы по выяснению причин медленной загрузки и решению всех проблем заняли около полугода, но результат того стоил.
Если у вас тоже есть проблемы со скоростью работы коробочного Битрикс24, можете смело обращаться к нам. Мы не просто остановимся на базовых советах, а докопаемся до причин медленной работы и предложим варианты ускорения вашего портала.


