Как изменить open_files_limit в MySQL

Приведу пример просмотра и увеличения параметра open_files_limit в MySQL.
Выполнять операции буду в системе Ubuntu Server 16.04.

Сначала посмотрим сколько открыто файлов в текущий момент:

sudo lsof -u mysql | wc -l

Подключимся к MySQL серверу и осмотрим максимальное значение (по умолчанию 1024):

mysql -u root -p
show variables like "open_files%";
exit

Если необходимо увеличить, то посмотрим не указан ли уже параметр и откроем файл конфигурации MySQL сервера в текстовом редакторе:

sudo grep -r "open_files_limit" /etc
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

И например укажем:

open_files_limit=20480

Также увеличим лимит в системе для пользователей добавив в файл /etc/security/limits.conf:

* hard nofile 30720
* soft nofile 20480
root hard nofile 30720
root soft nofile 20480
mysql hard nofile 30720
mysql soft nofile 20480

Также добавим в секцию «Service» в файле /etc/systemd/system/multi-user.target.wants/mysql.service (можно указать «infinity» чтобы снять ограничение):

LimitNOFILE=20480

Если используется MariaDB, то укажем в файле /etc/systemd/system/mariadb.service.d/override.conf

Перезапустим MySQL сервер чтобы применить изменения (на ходу применить через «set global …» не получится, так как «open_files_limit» является только для чтения):

sudo systemctl daemon-reload
sudo systemctl restart mysql.service

Если не увеличить в системе, то после перезапуска MySQL в /var/log/mysql/error.log будет ошибка и значение останется прежним:

[Warning] Could not increase number of max_open_files to more than 1024 (request: 20480)

Смотрите также мою статью:
Как изменить «open files» в Linux

Вливайтесь в общение

1 комментарий

Добавить комментарий

  1. А потом удивляемся, почему мускуль жрет как не в себя. Так как он резервирует память под открытие файлов.