Out of resources when opening file ‘./xxx.MYD’ (Errcode: 24) 解决

前两天数据库出现了这个错误,在网上查找到了解决方法。在解决过程中的一些问 题记录下来。首先出现Out of resources when opening file ‘./xxx.MYD’ (Errcode: 24)错误是因为打开的文件数超过了my.cnf的–open-files-limit。 open-files-limit选项无法在mysql命令行直接修改,必须在my.cnf中设定,最大值是65536。

 

重新启动以后,发现

mysql> show variables like ‘open%’;
+——————+——-+
| Variable_name    | Value |
+——————+——-+
| open_files_limit | 1024  |
+——————+——-+
1 row in set (0.00 sec)

 

并没有改变。赶快查看服务器的打开文件数设定的值(用ulimit -n查看),结果发现果然是1024。在修改服务器设置后,也改成了65536,重启服务还是没有改变。需要重新登录服务器再重启数据库服务就OK了。原来这个值会取数据库和服务器设定的最小值。
 
 

mysql> show variables like ‘open%’;

+——————+——-+

| Variable_name    | Value |

+——————+——-+

| open_files_limit | 65536 |

+——————+——-+


1 row in set (0.00 sec)
 
 
 
 
 

使用ulimit -a 可以查看当前系统的所有限制值,使用ulimit -n 可以查看当前的最大打开文件数。

 

新装的linux默认只有1024,当作负载较大的服务器时,很容易遇到error: too many open files。因此,需要将其改大。

 

使用 ulimit -n 65535 可即时修改,但重启后就无效了。(注ulimit -SHn 65535 等效 ulimit -n 65535,-S指soft,-H指hard)

 

有如下三种修改方式:

 

1.在/etc/rc.local 中增加一行 ulimit -SHn 65535
2.在/etc/profile 中增加一行 ulimit -SHn 65535
3.在/etc/security/limits.conf最后增加如下两行记录
* soft nofile 65535
* hard nofile 65535

 

具体使用哪种,试试哪种有效吧,我在 CentOS中使用第1种方式无效果,使用第3种方式有效果,而在Debian中使用第2种有效果

 

Leave a Reply

Your email address will not be published.