linux下如何清理快取
阿新 • • 發佈:2018-11-10
手頭的路由本身記憶體就比較少,上面又跑了一個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了,老子要的現在就要。嗯,就是這樣。