有個 Linux 的站羣服務器,2G 內存的,今天登上去一看,內存竟然被佔得滿滿的。
ssh 上去執行了 free.
free -m
total used free shared buff/cache available
Mem: 2000 182 191 3 1625 1614
Swap: 0 0 0

發現內存全在一個 [buff/cache] 裏.
查詢資料得知可以通過 proc 下的一個檔案釋放,
以下原文:
/proc 是一個虛擬檔案系統, 我們可以通過對它的讀寫操作做為與 kernel 實體間進行通訊的一種手段. 也就是説可以通過修改/proc 中的檔案, 來對當前 kernel 的行為做出調整. 那麼我們可以通過調整/proc/sys/vm/drop_caches 來釋放內存. 操作如下:
[root@server test]# cat /proc/sys/vm/drop_caches
0
首先,/proc/sys/vm/drop_caches 的值, 預設為 0
[root@server test]# sync
手動執行 sync 命令 (描述:sync 命令執行 sync 子例程。如果必須停止系統,則執行 sync 命令以確保檔案系統的完整性。 sync 命令將所有未寫的系統緩衝區寫到磁碟中,包含已修改的 i-node 、已延遲的塊 I/O 和讀寫對映檔案)
[root@server test]# echo 3 > /proc/sys/vm/drop_caches
[root@server test]# cat /proc/sys/vm/drop_caches
3
將/proc/sys/vm/drop_caches 值設為 3
[root@server test]# free -m
total used free shared buffers cached
Mem: 249 66 182 0 0 11
-/+ buffers/cache: 55 194
Swap: 511 0 511
再來執行 free 命令, 發現現在的 used 為 66MB,free 為 182MB,buffers 為 0MB,cached 為 11MB. 那麼有效的釋放了 buffer 和 cache.
根據資料, 只需要執行下面 2 個命令, 即可釋放:
sync
echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches