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

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

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

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

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

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

答案1

如果是 MySQL 耗盡了所有內存,那麼您必須調低其值或增加伺服器 RAM。如果您告訴 MySQL 它可以有 16 GB RAM,但只有 8 GB 可用,那麼事情就會發生。

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

相關內容