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';//這是是查詢數據庫當前設置的最大連接數


                

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