文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


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

如果您收到 ERROR 'file_name' not found (errno: 23)Can't open file: file_name (errno: 24) 或任何其他来自 MySQL 的带有 errno 23errno 24 的错误,则表示您没有为 MySQL 服务器分配足够的文件描述符。您可以使用 perror 实用程序来获取错误号含义的描述

$> 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)来减小表缓存的大小。这可能无法完全阻止文件描述符耗尽,因为在某些情况下,服务器可能会尝试临时扩展缓存大小,如 第 10.4.3.1 节 “MySQL 如何打开和关闭表” 中所述。减少 max_connections 的值也会减少打开文件的数量(默认值为 100)。

要更改 mysqld 可用的文件描述符数量,可以使用 --open-files-limit 选项启动 mysqld_safe 或设置 open_files_limit 系统变量。请参阅 第 7.1.8 节 “服务器系统变量”。设置这些值的最简单方法是将选项添加到您的选项文件中。请参阅 第 6.2.2.2 节 “使用选项文件”。如果您使用的是不支持设置打开文件限制的旧版本 mysqld,则可以编辑 mysqld_safe 脚本。脚本中有一行注释掉的代码 ulimit -n 256。您可以删除 # 字符以取消注释此行,并将数字 256 更改为要提供给 mysqld 的文件描述符数量。

--open-files-limitulimit 可以增加文件描述符的数量,但最多只能增加到操作系统施加的限制。还有一个 限制,只有在以 root 身份启动 mysqld_safemysqld 时才能覆盖此限制(请记住,在这种情况下,您还需要使用 --user 选项启动服务器,以便它在启动后不会继续以 root 身份运行)。如果您需要增加操作系统对每个进程可用的文件描述符数量的限制,请查阅系统的文档。

注意

如果您运行 tcsh shell,ulimit 将不起作用!当您询问当前限制时,tcsh 还会报告错误的值。在这种情况下,您应该使用 sh 启动 mysqld_safe