手動釋放Linux伺服器記憶體

來源:互聯網
上載者:User

在伺服器運行過程中,使用free -m查看伺服器記憶體時,經常會發現free值很小,有些同學就會很緊張,總想採取一些措施,使得free值看起來高一點,心裡就比較爽一點。其實,個人覺得這完全是圖一時之快,沒什麼實質性用途。

一、福士釋放記憶體方法

1. 首先使用free -m查看剩餘記憶體

view plaincopy to clipboardprint?

linux-8v2i:~ # free -m

total used free shared buffers cached

Mem: 3952 2773 178 0 130 1097

-/+ buffers/cache: 1545 2406

Swap: 2055 0 2055

linux-8v2i:~ # free -m

total used free shared buffers cached

Mem: 3952 2773 178 0 130 1097

-/+ buffers/cache: 1545 2406

Swap: 2055 0 2055

2. 執行sync命令

使用sync命令以確保檔案系統的完整性,sync 命令運行 sync 子常式,將所有未寫的系統緩衝區寫到磁碟中,包含已修改的 i-node、已延遲的塊 I/O 和讀寫對應檔。

view plaincopy to clipboardprint?

linux-8v2i:~ # sync

linux-8v2i:~ # sync

3. 修改/proc/sys/vm/drop_caches

view plaincopy to clipboardprint?

echo 3 > /proc/sys/vm/drop_caches

echo 3 > /proc/sys/vm/drop_caches

說明:

1>. /proc是一個虛擬檔案系統,我們可以通過對它的讀寫操作作為與kernel實體間進行通訊的一種手段。也就是說可以通過修改/proc中的檔案,來對當前kernel的行為做出調整。也就是說我們可以通過調整/proc/sys/vm/drop_caches來釋放記憶體。

2>. 關於drop_caches的官方說明如下:

Writing to this file causes the kernel to drop clean caches,dentries and inodes from memory, causing that memory to becomefree.

To free pagecache, use echo 1 > /proc/sys/vm/drop_caches;

to free dentries and inodes, use echo 2 > /proc/sys/vm/drop_caches;

to free pagecache, dentries and inodes, use echo 3 >/proc/sys/vm/drop_caches.

Because this is a non-destructive operation and dirty objects are not freeable, the user should run sync first.

3>. Linux核心會將它最近訪問過的檔案頁面緩衝在記憶體中一段時間,這個檔案快取被稱為pagecache。

4.再使用free -m查看剩餘記憶體,情況如下:

view plaincopy to clipboardprint?

linux-8v2i:~ # free -m

total used free shared buffers cached

Mem: 3952 1773 2325 0 0 80

-/+ buffers/cache: 1545 2406

Swap: 2055 0 2055

linux-8v2i:~ # free -m

total used free shared buffers cached

Mem: 3952 1773 2325 0 0 80

-/+ buffers/cache: 1545 2406

Swap: 2055 0 2055

二、Linux記憶體分析

1. 首先對free -m查看結果進行分析

view plaincopy to clipboardprint?

linux-8v2i:~ # free -m

total used free shared buffers cached

Mem: 3952 2773 178 0 130 1097

-/+ buffers/cache: 1545 2406

Swap: 2055 0 2055

linux-8v2i:~ # free -m

total used free shared buffers cached

Mem: 3952 2773 178 0 130 1097

-/+ buffers/cache: 1545 2406

Swap: 2055 0 2055

各參數含義:

total:總實體記憶體

used:已使用記憶體

free:完全未被使用的記憶體

shared:應用程式共用記憶體

buffers:緩衝,主要用於目錄方面,inode值等

cached:緩衝,用於已開啟的檔案

-buffers/cache:應用程式使用的記憶體大小,used減去緩衝值

+buffers/cache:所有可供應用程式使用的記憶體大小,free加上緩衝值

其中:

total = used + free

-buffers/cache=used-buffers-cached,這個是應用程式真實使用的記憶體大小

+buffers/cache=free+buffers+cached,這個是伺服器真實還可利用的記憶體大小

2. Linux的記憶體配置方式

大家都知道,Linux伺服器為了提高效率,會提前申請記憶體,即使這些記憶體沒有被具體應用使用,Linux也會提前申請這些記憶體,然後利用這些記憶體做緩衝用,即將剛開啟的檔案系統存入cache中,這樣對應的伺服器free值會越來越少,buffers和cached會越來越大,因此給大家表象就是記憶體越來越少了,大家就緊張了;其實,大家完全不用緊張,Linux伺服器在發現記憶體不足時,會自動清理cached地區,釋放記憶體,然後繼續增大cache,free繼續減少。因此,那樣手動降低記憶體使用量率的方法,其實就是圖一時之快,呵呵。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.