Рассмотрим как исправить причину ошибки вида 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 -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) в логах продолжают возникать процедуру можно повторить вновь изменив значение переменной.