# B.3.2.16 找不到文件和类似错误

如果你得到错误 '*文件名*' 未找到 (errno: 23),无法打开文件:*文件名*(错误号:24),或任何其他错误错误号 23要么错误号 24来自 MySQL,这意味着您没有为 MySQL 服务器分配足够的文件描述符。您可以使用错误实用程序来获取错误号含义的描述:

$> perror 23
OS error code  23:  File table overflow
$> perror 24
OS error code  24:  Too many open files
$> perror 11
OS error code  11:  Resource temporarily unavailable

这里的问题是mysqld正试图同时打开太多文件。你可以告诉mysqld不要一次打开这么多文件或增加可用的文件描述符的数量mysqld.

告诉mysqld要一次保持打开的文件更少,您可以通过减小table_open_cache系统变量(默认值为 64)。这可能不能完全防止文件描述符用完,因为在某些情况下,服务器可能会尝试临时扩展缓存大小,如中所述第 8.4.3.1 节,“MySQL 如何打开和关闭表”.降低价值最大连接数还减少了打开文件的数量(默认值为 100)。

更改可用于的文件描述符的数量mysqld, 你可以使用--open-files-limit选项mysqld_安全的或设置open_files_limit系统变量。看第 5.1.8 节,“服务器系统变量”.设置这些值的最简单方法是在选项文件中添加一个选项。看第 4.2.2.2 节,“使用选项文件”.如果您有旧版本的mysqld不支持设置打开文件限制,您可以编辑mysqld_安全的脚本。有一个注释掉的行ulimit -n 256在脚本中。您可以删除#取消注释这一行的字符,并更改数字256设置可用的文件描述符的数量mysqld.

--open-files-limit超限可以增加文件描述符的数量,但只能达到操作系统强加的限制。还有一个“硬”限制,只有在你开始时才能被覆盖mysqld_安全的要么mysqld作为(请记住,您还需要使用- 用户在这种情况下的选项,以便它不会继续运行启动后)。如果您需要增加操作系统对每个进程可用的文件描述符数量的限制,请查阅您系统的文档。

笔记

如果你运行tcsh贝壳,超限不工作!tcsh当您询问当前限制时,还会报告不正确的值。在这种情况下,您应该开始mysqld_安全的使用.