Spec-Zone .ru
спецификации, руководства, описания, API

C.5.2.18.'File'Не Найденные andSimilar Ошибки

Если Вы добираетесь ERROR '...' not found (errno: 23), Can't open file: ... (errno: 24), или любая другая ошибка с errno 23 или errno 24 от MySQL это означает, что Вы не выделили достаточно многие дескрипторы файлов для сервера MySQL. Можно использовать perror утилиту, чтобы получить описание того, что означает код ошибки:

shell> perror 23OS error code  23:  File table overflowshell> perror 24OS error code  24:  Too many open filesshell> perror 11OS error code  11:  Resource temporarily unavailable

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

Чтобы сказать mysqld сохранять открытым меньше файлов за один раз, можно сделать табличный кэш меньшим, уменьшая значение table_open_cache системная переменная (значение по умолчанию 64). Это, возможно, не полностью предотвращает исчерпывание дескрипторов файлов, потому что при некоторых обстоятельствах сервер может попытаться расширить размер кэша временно, как описано в Разделе 8.4.3.1, "Как MySQL Opens и Closes Tables". Сокращение значения max_connections также сокращает количество открытых файлов (значение по умолчанию 100).

Чтобы изменить число дескрипторов файлов, доступных mysqld, можно использовать --open-files-limit опция к mysqld_safe или набору open_files_limit системная переменная. См. Раздел 5.1.4, "Системные Переменные Сервера". Самый легкий способ установить эти значения состоит в том, чтобы добавить опцию к Вашему файлу опции. См. Раздел 4.2.3.3, "Используя Файлы Опции". Если у Вас есть старая версия mysqld, который не поддерживает устанавливание открытого предела файлов, можно отредактировать mysqld_safe сценарий. Есть закомментированная строка ulimit-n 256 в сценарии. Можно удалить"#"символ, чтобы непрокомментировать эту строку, и изменить число 256 определять номер дескрипторов файлов, которые будут сделаны доступным для mysqld.

--open-files-limit и ulimit может увеличить число дескрипторов файлов, но только до предела, наложенного операционной системой. Есть также "трудный" предел, который может быть переопределен, только если Вы запускаете mysqld_safe или mysqld как root (только помните, что Вы также должны запустить сервер с --user опция в этом случае так, чтобы это не продолжало работать как root после того, как это запускает). Если Вы должны увеличить предел операционной системы на числе дескрипторов файлов, доступных каждому процессу, консультируйтесь с документацией для своей системы.

Отметить

Если Вы выполняете оболочку tcsh, ulimit не работает! tcsh также сообщает о неправильных значениях, когда Вы просите текущие пределы. В этом случае следует запустить mysqld_safe, используя sh.