Ubuntu

處理完成後創建大文件佔用記憶體

  • May 10, 2016

我正在使用 Ubuntu 14.04LTS 伺服器 (AWS EC2) 進行自定義數據庫轉儲,但我得到了一個非常奇怪的記憶體行為。

我正在使用 PHP CLI 腳本循環輸出到編號文件的自定義轉儲查詢,然後cat將該文件輸入到輸出文件中。由於mysql,記憶體使用量按預期攀升。mysql 轉儲文件和輸出文件都被寫入單獨的掛載驅動器 (EBS)。

在啟動腳本之前,記憶體使用量約為 20%。一旦該過程完成,記憶體使用率約為 90%,基於htop. 我已經用free -m. mysql 重新啟動會將記憶體使用量降低到大約 50%。

我曾經lsof驗證過沒有任何東西在使用該文件。我什至已經完成lsof了目錄,只得到了我的 bash 程序和 lsof。

真正奇怪的部分是,一旦我刪除文件,記憶體使用量就會下降到 20%。

我嘗試在不重新啟動 mysql 的情況下刪除文件,並且使用率下降了上述數字預期的 30%。

使用此處找到的記憶體查看器腳本不會顯示相同的記憶體使用情況,因此我認為它並不完全準確。它通過保留文件顯示沒有記憶體消耗。

有沒有其他方法可以告訴我是什麼保存了記憶體?

您實際查看的是系統的磁碟記憶體使用情況。所有現代系統都會記憶體磁碟操作,以更快地重複訪問同一磁碟區域。

這個記憶體過程被認為花費很少的資源,因為它可能會在以後產生頻繁的好處。由於系統知道記憶體與任何其他記憶體需求相比並不重要,因此它會在需要時立即轉儲部分記憶體以用於其他用途。

您還注意到 MySQL 伺服器程序的內部記憶體,其作用類似於作業系統的記憶體,但作業系統不將其辨識為記憶體,這就是為什麼它僅根據伺服器程序本身的操作釋放,例如重新啟動它。

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