MySQL不再使用指定的RAM
幾天前,我有一台新機器正在執行
CentOS 5.6 (64bit), with 12GB ddr3 ram, 4x SAS 15k rpm drives in RAID10
。在這台機器上,我正在執行 MySQL Server version:5.1.39-maria-beta-ourdelta67-log
,我在以前的伺服器上也一直在使用它,並且效果很好。這是我的my.cnf
http://pastebin.com/kLfmbHSW現在在今天早上之前,MySQL 總是會用完我設置的指定 RAM
my.cnf
(大約 12GB 的 95%)。在盯著 mysql 之後,我會立即檢查“頂部”,實際上 95% 的記憶體都會被佔用。但是現在,在我重新啟動 MySQL 後,當我點擊“頂部”時,我看到了這一點。
Mem: 12289856k total, 1884924k used, 10404932k free, 39660k buffers
僅使用約 15%。這個數字上升得有點慢,但在它總是會立即用完所有 RAM 之前。
這可能是什麼原因造成的?
更新:自從我重新啟動mysql後,它一直在慢慢使用越來越多的ram,直到它佔用了我所有的12gb,並且整個機器都被鎖定了。我不得不重新啟動 linux 才能讓它重新聯機。它現在又是 1.8gb,而且還在慢慢上升。整個 ram 管理似乎很糟糕,因為它需要更多的 ram,但從不刷新它。
有什麼想法可能導致這種情況嗎?
現在好像解決了。我不得不重建所有索引,之後mysql記憶體使用恢復正常。儘管我之前對所有表和索引進行了 mysql 檢查,並且沒有發現任何錯誤,但重建索引確實解決了問題。
感謝所有的建議傢伙!
看來您正在執行一個測試版,這往往是錯誤的。但是,僅僅因為您指定了要使用的記憶體,並不意味著作業系統會分配它。當 mysql 向作業系統詢問您擁有 8GB 的記憶體量時,它會收到一種期票:“是的,當然可以,您可以擁有 8GB”。
然後應用程序(在本例中為 mysql)管理它自己的堆,以及它使用多少記憶體。隨著查詢數量的增加,使用量隨著堆的增加而增加。這就是為什麼你會看到隨著時間的推移而增加。
您的伺服器鎖定的原因可能有很多原因,例如其他應用程序使用的記憶體比您預期的要多,或者只是 mysql 中存在錯誤(我傾向於認為不太可能)。