Linux

如何釋放mysql伺服器使用的物理和虛擬記憶體?

  • July 2, 2015

在我的 CentOS 6.5 上通過 crontab 執行了幾個 php 腳本,每個 php 腳本都包含至少一個數據庫請求。根據 php 對象的大小和類型,在某些特定情況下,mysqld 服務會分配過多的物理記憶體。

有時,1.7GB 中只有 15MB 可用記憶體,交換記憶體也可能分配到 95% 的使用率。為了釋放伺服器記憶體,唯一的替代解決方案是重新啟動 mysqld 伺服器,但幾天后記憶體幾乎又滿了。

為了忽略 mysqld 重啟,我嘗試使用刷新查詢記憶體RESET QUERY CACHE;FLUSH QUERY CACHE;但記憶體狀態沒有任何變化。我也嘗試過執行sync && echo 3 | sudo tee /proc/sys/vm/drop_caches,但記憶體狀態再次相同。

你知道如何在每次腳本執行後釋放物理和虛擬記憶體而不重新啟動 mysql 伺服器嗎?

如果是 MySQL 佔用了所有記憶體,那麼您必須調低它的值或增加伺服器 RAM。如果您告訴 MySQL 它可以有 16 GB 的 RAM,但只有 8 GB 可用,那麼事情確實會發生。

你不會為了發成屋間太小而在普通的酒店房間裡舉辦 20 人的聚會,然後在第二天晚上再試一次,希望你能在那裡容納 20 人。您要麼預訂更大的房間,要麼邀請更少的人。

引用自:https://serverfault.com/questions/646616