ERROR mysqld: Can't open file (errno: 24)


Рассмотрим как исправить причину ошибки вида 70126  4:40:10 ERROR mysqld: Can't open file: './somedb/sometable.frm' (errno: 24)



Нагрузка на сервер, обслуживающий веб-приложение часто вызывается MySQL. Установить так ли это можно проанализировав вывод atop. Если из него следует, MySQL нагружает сервер по CPU проверяются логи сервиса для того чтобы выяснить причины.


В журнале ошибок сервера баз данных /var/log/mysql/mysql-err.log иногда можно встретить следующие сообщения:

170126  4:40:10 [ERROR] mysqld: Can't open file: './somedb/sometable.frm' (errno: 24)
170126  4:40:10 [ERROR] mysqld: Can't open file: './somedb/sometable.frm' (errno: 24)
170126  4:40:10 [ERROR] mysqld: Can't open file: './somedb/sometable.frm' (errno: 24)
170126  4:40:11 [ERROR] mysqld: Can't open file: './somedb/sometable.frm' (errno: 24)
170126  4:40:11 [ERROR] mysqld: Can't open file: './somedb/sometable.frm' (errno: 24)


somedb здесь — имя базы данных

sometable.frm — таблица БД



Из сообщений следует, что превышен лимит на количество открытых файлов для существующего процесса.


ERROR mysqld: Can't open file (errno: 24) - ошибка MySQL


Как исправить ошибку ERROR mysqld: Can't open file (errno: 24)


Чтобы исправить ошибку нужно увеличить количество возможных открытых единовременно файлов. Прежде всего потребуется посмотреть актуальное значение переменной:



Заходим в консоль севера баз данных:

mysql -u root -p

Выполняем запрос и видим существующее значение, обычно это 1024 файла.

SHOW VARIABLES LIKE 'open%'



Переменная существует в режиме read-only и изменить ее значение из консоли MySQL не получится (запрос мог бы выглядеть как SET open_files_limit=100000)



Чтобы отредактировать значение переменной open_files_limits нужно внести изменения в конфигурационный файл MySQL /etc/mysql/my.cnf

[mysqld]

open_files_limit = 100000



После того как лимит установлен перезапускаем службу:

/etc/init.d/mysql restart



В выводе запроса SHOW VARIABLES LIKE 'open%' теперь должно фигурировать новое значение.

Если ошибки [ERROR] mysqld: Can't open file (errno: 24) в логах продолжают возникать процедуру можно повторить вновь изменив значение переменной.

Сказать спасибо