架構師小跟班:如何高效又安全的清理Linux服務器上的緩存?

操做服務器上的生產環境,必定要慎之又慎,安全第一,優化第二!
node

一些基本原理

說到清理內存,那麼不得不提到/proc這一個虛擬文件系統,這裏面的數據和文件都是內存中的實時數據,不少參數的獲取均可以從下面相應的文件中獲得,好比查看某一進程佔用的內存大小和各項參數,cpu和主板的詳細信息,顯卡的參數等。web

相應的關於內存的管理方式是在/proc/sys/vm/drop_chches文件中,必定要注意這個文件中存放的並非具體的內存內容,而是0-3這幾個數字,經過文件大小隻有1B也能夠知道,而這些代號分別告訴系統表明不一樣的含義以下:緩存

0:系統默認值,默認狀況下表示不釋放內存,由操做系統自動管理安全

1:釋放頁緩存服務器

2:釋放dentries和inodes優化

3:釋放全部緩存spa

因此根據上面的說明,分別將1,2,3這3個數字重定向到drop_caches中能夠實現內存的釋放,通常釋放內存都是重定向3到文件中,釋放全部的緩存。操作系統

清除緩存操做步驟

一、查看當前緩存剩餘orm

free -h
blog

當前內存剩餘570M左右,另外buff/cache是1.3G,根據上面說的如今真正的剩餘內存應該是1.8G左右。

二、寫緩存到文件系統

sync

三、釋放內存

echo 1 > /proc/sys/vm/drop_caches

四、執行後查看內存剩餘

free -h

若是想讓操做系統從新分配內存,那麼設置drop_caches的值爲0便可:

echo 0 > /proc/sys/vm/drop_caches

特別注意:

在生產環境中的服務器咱們不要頻繁的去釋放內存,只在必要時候清理內存便可,更重要的是咱們應該從應用程序層面去優化內存的利用和釋放,常常清理內存可能只是暫時屏蔽的應用程序中的一些bug,因此更重要的是程序的調優,其餘的交給操做系統來管理。

相關文章
相關標籤/搜索