Spec-Zone .ru
спецификации, руководства, описания, API
|
Если Вы добираетесь ERROR '...' not found (errno: 23)
, Can't
open file: ... (errno: 24)
, или любая другая ошибка с errno 23
или errno 24
от MySQL это означает, что Вы не выделили достаточно многие дескрипторы
файлов для сервера MySQL. Можно использовать perror утилиту, чтобы получить описание того, что означает
код ошибки:
shell>perror 23
OS error code 23: File table overflowshell>perror 24
OS error code 24: Too many open filesshell>perror 11
OS 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.