1. 程式人生 > >linux下如何清理快取

linux下如何清理快取

手頭的路由本身記憶體就比較少,上面又跑了一個nginx+php的環境,簡直慢的爆炸,check的時候發現記憶體經常被佔了很多。
linux的虛擬記憶體機制,很多時候回導致記憶體得不到及時釋放,有時候記憶體很少了,kill了很多程序,但是記憶體還是沒有釋放,這時候可以嘗試一下手動釋放,linux是提供了這樣的介面的。

echo 1 > /proc/sys/vm/drop_caches

這樣就能釋放了。

[email protected]:~# free
             total         used         free       shared      buffers
Mem:        126712        51792        74920            0         7132
-/+ buffers:              44660        82052
Swap:            0            0            0
[email protected]
:~# [email protected]:~# echo 1 > /proc/sys/vm/drop_caches [email protected]:~# free total used free shared buffers Mem: 126712 28328 98384 0 672 -/+ buffers: 27656 99056 Swap: 0 0 0
[email protected]
:~#

記憶體一下多了幾十M,相對於總共128M的記憶體還是很客觀的。

下面簡單介紹一下這條命令。

/proc/sys/vm/drop_caches

proc檔案節點,是使用者與核心進行通訊和資料交換的一個通道,sys/vm/drop_caches字面也好理解,系統的虛擬記憶體模組保留的一個drop caches的介面,想這個介面發指令就能drop caches,linux這個命名也是6啊,看名知意。
echo的引數:
0 – 不釋放
1 – 釋放頁快取
2 – 釋放dentries和inodes
3 – 釋放所有快取
3還是慎用吧,另外釋放記憶體之前最好sync一下,linux本身將記憶體中的快取寫回磁碟的時間是30s(印象是這個,如果自己沒有調過核心引數的話),sync就是告訴系統,把快取的東西該寫磁碟的寫磁碟,老子不等你那個30s了,老子要的現在就要。嗯,就是這樣。