• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 找不到文件和类似错误

    如果你,或任何其他误差或从MySQL,这意味着你没有为MySQL服务器分配足够的文件描述符。您可以使用perror实用程序获取有关错误编号含义的描述:ERROR 'file_name' not found(errno: 23)Can't open file:file_name(errno: 24)errno 23errno 24

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

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

    为了告诉mysqld一次打开更少的文件,可以通过减小table_open_cache系统变量的值(默认值为64)来减小表缓存。这可能无法完全防止文件描述符用尽,因为在某些情况下,服务器可能会尝试临时扩展缓存大小,如“ MySQL如何打开和关闭表”中所述。减小值max_connections还会减少打开文件的数量(默认值为100)。

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

    --open-files-limitulimit可以增加文件描述符的数量,但只能达到操作系统所施加的限制。还有一个“硬”限制仅如果你开始是不能修改的mysqld_safe的mysqld的作为root(只记得,你还需要启动服务器与--user在这种情况下选项,以便它不会继续照常运行root后启动)。如果您需要增加操作系统对每个进程可用文件描述符数量的限制,请查阅系统的文档。

    注意

    如果运行tcsh shell,则ulimit不起作用!当您要求当前限制时,tcsh还会报告不正确的值。在这种情况下,您应该使用sh启动mysqld_safe