MYSQL ErrorCode:24 too many opened files

来源:互联网 发布:算法分析专业 编辑:程序博客网 时间:2024/06/10 18:17

问题:MySql 打开文件错误:“outof resources when opening file‘C:\WINDOWS\TEMP\#sql3308_675_0.MYI’(ErrorCode:24 too many opened files )  ”


当遇到问题时,我们首先要进行的是分析问题:此时mysql出错了,显示打开了太多的文件,而打不开新的文件了,那么解决此问题就会有两种解决的方案:

第一种:将打开文件的限制数调大,调大满足个人需求的位置

第二种:将打开的文件关闭


解决方案一:在mysql 的my.ini配置文件中,[mysqld]中添加open_files_limit = 30000 这个数字最大可以设置为65535,重启mysql服务,可以使用show variables like 'open%';查看设置成功没

mysql> show variables like 'open%';+------------------+-------+| Variable_name    | Value |+------------------+-------+| open_files_limit | 32048 |+------------------+-------+
你会奇怪这个值为什么是32048,多了2048个,这个目前还不知道如何解释,不过测试了之后文件确实也只能打开30000个。

可以使用show status like 'open%'去查看现在打开了多少个文件 open_files 就是目前打开的文件数,open_table_definitions 是目前打开了多少个表,使用show open tables可以查看打开了那些表,opened_files 是自从mysql服务启动打开了多少个文件。

mysql> show status like 'open%';+--------------------------+-------+| Variable_name            | Value |+--------------------------+-------+| Open_files               | 24272 || Open_streams             | 0     || Open_table_definitions   | 176   || Open_tables              | 171   || Opened_files             | 62969 || Opened_table_definitions | 0     || Opened_tables            | 0     |+--------------------------+-------+

同时这个打开文件的限制数的设置还会受到另一个的限制数的限制, max_prepared_stmt_count ,如果这个值大于

open_files_limit , 系统会以max_prepared_stmt_count这个设置限制数为标准。查看max_prepared_stmt_count这个数的设置可以使用show variables like 'max_prepared%';进行查看

mysql> show variables like 'max_prepared%';+-------------------------+-------+| Variable_name           | Value |+-------------------------+-------+| max_prepared_stmt_count | 16382 |+-------------------------+-------+


NOTE:当然这个数的设置,存在着一定的分险,因为这个数值可能在业务增多时,还是会超过最大值,而出错,所以我提倡用第二种。


解决方案二:使用 flush tables 进行对打开表的缓存进行清空。