[ERROR] /usr/sbin/mysqld: Cant open file (filename) errno 24 Too many open files
Столкнулись с проблемой. В логах MySQL стали появляться ошибки типа
[ERROR] /usr/sbin/mysqld: Can't open file: './billing/tablename.frm' (errno: 24 - Too many open files)
По прошествии некоторого времени, сервисы связанные с этой базой, отмирают насовсем, до перезапуска.
Начали разбираться. Смотрим лимиты в самой MySQL
mysql> SHOW VARIABLES LIKE 'open%';
open_files_limit | 5000
Давайте увеличим...
В файл конфига (/etc/mysql/mysql.conf.d/mysqld.cnf) добавляем опцию
open_files_limit = 20000
Рестарт MySQL
systemctl restart mysql
В логах видим запись
[Warning] Could not increase number of max_open_files to more than 5000 (request: 20000)
У меня базы крутятся под Debian. Под другую ось, возможно будут другие варианты, как это починить.
Если же у вас тоже Debian, то идем в файл /lib/systemd/system/mysql.service и вносим там правки
LimitNOFILE=20000
LimitMEMLOCK=20000
После этого надо выполнить команду
systemctl daemon-reload
Снова рестарт MySQL
systemctl restart mysql
Снова идем в консоль MySQL и смотрим
mysql> SHOW VARIABLES LIKE 'open%';
open_files_limit | 20000