Приведу пример просмотра и увеличения параметра 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
А потом удивляемся, почему мускуль жрет как не в себя. Так как он резервирует память под открытие файлов.