Мини Вики. Чтоб ничего не забыть!

[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