有個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.
引用自:http://blog.chinaunix.net/uid-24020646-id-2939696.html
根據資料,只需要執行下面2個命令,即可釋放:
sync
echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches
首先是把緩存都寫到磁盤,然后分三步把緩存清理掉.