Linux服務器有自己先進的內存管理機制,有時候會發現我們系統的buff/cache內存占用會越來越高,操作系統也有卡頓的情況,遇到這種情況,不妨試試下面的方法。
步驟一:我們先使用free -m查看內存占用情況,可以看到內存中大部分內存被buff/cache占用,free內存已經剩余400多M了。
對上面內存參數進行說明,內存也可以使用top命令查看
total——總物理內存
used——已使用內存
free——完全未被使用的內存
shared——應用程序共享內存
buffers——緩存,主要用於目錄方面,inode值等(ls大目錄可看到這個值增加)
cached——緩存,用於已打開的文件
-buffers/cache=used-buffers-cached
+buffers/cache=free+buffers+cached
步驟二:釋放之前執行sync命令同步數據導硬盤中。
linux的緩存機制是這樣的,當第一次讀取一個文件時,一份放到內存cache中,另外一份放到運行程序的內存中,當下次再使用的時候,直接從cache中讀取數據,速度就會快很多,但是有頻繁的讀寫,而drop_cache默認是不釋放的,就導致cache占用越來越多,物理內存會逐漸被吃了,當然此設置也是可以修改的,我們下面看怎么臨時釋放cache內存。
步驟三:執行如下命令釋放所有緩存
[root@localhost ~]# echo 3 > /proc/sys/vm/drop_caches
drop_caches的值可以是0-3之間的數字,代表不同的含義
0:不釋放(系統默認值)
1:釋放頁緩存
2:釋放dentries和inodes
3:釋放所有緩存
命令執行后,可以看到,緩存釋放,free內存已經上升,系統也流暢了很多。