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