Приложение A. Проблемы и распространенные ошибки |
Пред. |
|
След. |
A.2. Распространенные ошибки при использовании MySQL
A.2.16. Не найден файл (File not found)
Получение от MySQL ERROR '...' not found (errno: 23), Can't open file: ... (errno: 24) , или любой другой ошибки с номером 23 или 24 означает, что для MySQL выделено недостаточно файловых дескрипторов. Можно использовать утилиту perror для получения описания ошибки с определенным номером:
shell> perror 23
File table overflow
shell> perror 24
Too many open files
shell> perror 11
Resource temporarily unavailable
Проблема здесь в том, что mysqld пытается одновременно держать открытыми слишком много файлов. Можно либо указать mysqld не открывать так много файлов одновременно, либо увеличить количество файловых дескрипторов, доступных mysqld .
Чтобы предписать mysqld держать одновременно открытыми меньше файлов, можно уменьшить табличный кэш, задав safe_mysqld опцию -O table_cache=32 (значение по умолчанию 64). Уменьшение значения max_connections также уменьшит количество открытых файлов (по умолчанию значение переменной 90).
Чтобы изменить число доступных mysqld файловых дескрипторов, можно использовать опцию --open-files-limit=# в safe_mysqld или опцию -O open-files-limit=# в mysqld (see Раздел 4.5.6.4, «SHOW VARIABLES »). Проще всего это сделать путем добавления опции в файл опций (see Раздел 4.1.2, «Файлы параметров my.cnf »). Если используется ранняя версия mysqld , не поддерживающая эту возможность, можно отредактировать скрипт safe_mysqld . В скрипте есть закомментированная строка ulimit -n 256 ; можно, убрав символ "# ", раскомментировать эту строку и, заменив значение 256 другим, повлиять на количество доступных mysqld файловых дескрипторов.
При помощи ulimit (и open-files-limit ) можно увеличить количество файловых дескрипторов только до предела, установленного в операционной системе. Существует также "жесткий" предел, который может быть переопределен только при запуске safe_mysqld или mysqld от имени пользователя root (но помните, что в этом случае также следует использовать опцию --user=... ). Если необходимо увеличить предел ОС по количеству доступных отдельному процессу файловых дескрипторов, обращайтесь к документации по своей операционной системе.
Обратите внимание: при использовании tcsh ulimit работать не будет! Кроме того, tcsh будет сообщать неверные значения при запросе текущих пределов! В этом случае необходимо запускать safe_mysqld с использованием sh !
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|