mysql_5.6內存太高問題解決

MySQL 5.6安裝完以後,每過一段時間就會莫名其妙掛掉。並且還很難啓動。非要重啓服務器,才能拉起mysql。mysql

後來分析是因爲mysql啓動後內存太高,跑一段時間就會因爲內存不足而被殺死。sql

今天分析了這個問題,緣由及結果以下。緩存

 

我安裝的版本是5.6.35。它默認佔用內存達400多M,  而原來使用的5.0 只有30M。服務器

最開始我嘗試調整這些參數:nosql

innodb_buffer_pool_size = 64M spa

key_buffer_size = 8Mrest

query_cache_size = 16M orm

tmp_table_size = 16M 內存

key_buffer_size = 32Mit

調整後內存是降低一點點。但仍是400M以上。

 

最後查出5.6默認的設置以下

performance_schema_max_table_instances 12500

table_definition_cache 1400 #打開表的緩存

table_open_cache 2000  #表定義的緩存

 

其中 table_open_cache 是mysql每打開一個表,都會讀入一些數據到table_open_cache 緩存中。當mysql在這個緩存中找不到相應的信息時,纔會去磁盤上直接讀取。多說一句,增長 table_open_cache ,會增長文件描述符,當把 table_open_cache 設置爲很大時,若是系統處理不了那麼多文件描述符,那麼就會出現客戶端失效,鏈接不上。

 

而我如今打開表的數目是63個,徹底用不了那麼多。

mysql> show status like "open%";

+--------------------------+-------+

| Variable_name            | Value |

+--------------------------+-------+

| Open_files               | 16    |

| Open_streams             | 0     |

| Open_table_definitions   | 70    |

| Open_tables              | 63    |

| Opened_files             | 147   |

| Opened_table_definitions | 0     |

| Opened_tables            | 0     |

+--------------------------+-------+

 

 

修改

performance_schema_max_table_instances=600

table_definition_cache=400

table_open_cache=256

 

重啓mysql

service mysqld restart

 

發現mysql內存降低到81M。不錯。^^

 

感謝連接:http://nosqldb.org/p/55ceaac5c3f8a8336f3bf727

相關文章
相關標籤/搜索