Pull to refresh
1950.15

«Битрикс24». Играемся с настройками и оптимизируем проект

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

Дано


Корпоративный портал в «Битрикс24», рассчитанный на несколько сотен пользователей, c ~300 Гб файлов и ~80 Гб БД на выделенном сервере с BitrixVM.

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



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

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

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


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

Решение


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

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

explicit_defaults_for_timestamp = 1
expire_logs_days = 10
max_binlog_size = 100M
max_allowed_packet = 128M
transaction-isolation = READ-COMMITTED
performance_schema = OFF
sql_mode = ""


# Cache parameters
query_cache_type = 1
query_cache_size=16M
query_cache_limit=4M
key_buffer_size=256M
join_buffer_size=2M
sort_buffer_size=4M

# Parameters for temporary tables
tmpdir = /tmp
tmp_table_size=128M
max_heap_table_size=128M
thread_cache_size = 4
table_open_cache = 2048

# InnoDB parameters
innodb_file_per_table
innodb_buffer_pool_size = 8192M
innodb_buffer_pool_instances = 1
innodb_flush_log_at_trx_commit = 0
innodb_flush_method = O_DIRECT
innodb_strict_mode = OFF

# Database charset parameters
character-set-server=utf8
collation-server=utf8_general_ci
init-connect="SET NAMES utf8"

[mysqldump]
quick
quote-names
default-character-set = utf8

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

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

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



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

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

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

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

zend_extension=opcache.so
opcache.enable = 1
opcache.enable_cli = 1
opcache.memory_consumption = 256
opcache.max_file_size = 2M
opcache.interned_strings_buffer = 64
opcache.max_accelerated_files = 130987
opcache.fast_shutdown = 1
opcache.revalidate_freq = 1
opcache.fast_shutdown=1
opcache.save_comments=1
opcache.load_comments=1
opcache.use_cwd = 1

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

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

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



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

Вывод


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

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

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

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

Articles

Information

Website
timeweb.cloud
Registered
Founded
Employees
201–500 employees
Location
Россия
Representative
Timeweb Cloud