Битрикс

Увеличиваем значение table_open_cache

-
15 ноября, 2019

В какой-то момент существования сайта или портала на платформе Битрикс возникает необходимость увеличить значение параметра table_open_cache. Система об этом сигнализирует на странице «Сервер БД» в административной части в секции «Настройки». В этой статье я опишу шаги которые необходимо выполнить для обновления этого значения. Настройка будет производиться на рекомендуемом Битрикс окружении: ОС CentOS и веб-окружение Bitrix Virtual Appliance.

На странице административного раздела "Настройки"-"Производительность"-"Сервер БД" содержится информация по основным параметрам сервера БД и рекомендации по улучшению. Параметры которые стоит изменить система будет подсвечивать красным цветом. Для переопределения практически всех значений достаточно переопределить их в файле /etc/mysql/conf.d/z_bx_custom.cnf. Но для параметра table_open_cache этого недостаточно, так как он связан с лимитом на количество открытых файлов, который является системным параметром, а значит потребуется изменить и его. Здесь важно понимать, что параметр table_open_cache зависит от параметра max_connections и для рассчета оптимального значения можно воспользоваться следующей формулой: max_connections * кол-во таблиц в базе. Например если у вас значение max_connections = 245, а количество таблиц 1090. То значение table_open_cache должно быть не меньше чем 245 * 1090 = 267050. С этими знаниями приступим к настройке.

В первую очередь пропишем полученное значение в файле /etc/mysql/conf.d/z_bx_custom.cnf:

... table_open_cache = 267050 open_files_limit = 267050

Теперь нам нужно поднять лимиты на количество открытых файлов в системе. Здесь можно поставить значения в среднем в 2 раза выше чем параметры для сервера БД — 534 100. Для этого нам потребуется сделать следующие шаги.

В файле /etc/security/limits.conf пропишем такие лимиты

* hard nofile 534100 * soft nofile 534100 root hard nofile 534100 root hard nofile 534100

Чтобы не перезагружать сервер изменим значения «в живую»

ulimit -n 534100

Проверить можно с помощью следующих команд:

ulimit -Sn ulimit -Hn

Теперь остается только перезаписать значение лимита которое устанавливается при запуске службы mysql. Для этого отредактируем файл /usr/lib/systemd/system/mysqld.service в котором находим параметр LimitNOFILE и устанавливаем нужное значение

LimitNOFILE = 534100

Теперь нужно перезагрузить демонов и перезапустить службу mysqld:

systemctl daemon-reload systemctl restart mysqld

После этого на странице «Сервер БД» вы должны увидеть измененные значения.

ТЕГИ
RELATED POSTS

ОСТАВИТЬ КОММЕНТАРИЙ

Николай Сарры
Харьков, Украина

Меня зовут Николай, и вот уже 5 лет я руководитель IT-проектов.Добро пожаловать в мой лофт с заметками, статьями, идеями и мыслями по управлению проектами, использованию гибких методологий разработки.Здесь собраны мои мысли, решения, заметки и статьи. В основном по управлению проектами, PHP-разработке и используемым инструментам, обзоры прочитанных статей, тезисы посещенных конференций.