Mysql Errcode: 24 - Too many open files

    Out of resources when opening file '**.MYD' (Errcode: 24 - Too many open files)

今天测试数据库出现链接一打开表就报上面这个错 

首先给出解决方案:

 flush tables;//命令将会清空当前所有缓存的表。

set global table_open_cache=214;//释放缓存的文件数。

比较适合的值:
Open_tables / Opened_tables >= 0.85
Open_tables / table_open_cache <= 0.95

show global status like 'open_%';//这个是查看全局被打开的状态,下面那条就是查看表的

SHOW GLOBAL STATUS LIKE 'open%tables';//查看被打开表数及被打开过的表数。

其中open_tables表示当前打开的table总和,即所有connection打开的table总数。
opened_tables表示打开过的表的数量总和,只有show global status才能看到它的值。这是个计数器,Opened_tables/Uptime的值过大说明table_open_cache过小,导致一些table对象(即下文说的table对象)经常会刷出server层,需要的时候再创建,最终导致此计数过大。

    show variables like 'table%‘; //展示参数设置表高速缓存的数目。

每个连接进来,都会至少打开一个表缓存,如果在表缓冲区中还有空间,该表就被打开并放入其中,这样可以更快地访问表内容。因此, table_open_cache的大小应与 max_connections 的设置有关。

         例如,对于 200 个并行运行的连接,应该让表的缓存至少有 200 × N ,这里 N 是应用可以执行的查询的一个联接中表的最大数量。此外,还需要为临时表和文件保留一些额外的文件描述符。

show global variables like 'max_connections';//这是是查询数据库当前设置的最大连接数


                

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章