linux釋放記憶體命令用法詳解

來源:互聯網
上載者:User

在Linux伺服器上運行著WebLogic伺服器,但是每隔一段時間就會發現,系統記憶體佔用比較多導致運行效能下降,此時,可以通過釋放系統記憶體以解決。

要達到釋放緩衝的目的,我們首先需要瞭解下關鍵的設定檔/proc/sys/vm/drop_caches。這個檔案中記錄了緩衝釋放的參數,預設值為0,也就是不釋放緩衝。他的值可以為0~3之間的任一數字,代表著不同的含義:

0 – 不釋放
1 – 釋放頁緩衝
2 – 釋放dentries和inodes
3 – 釋放所有緩衝

知道了參數後,我們就可以根據我們的需要,使用下面的指令來進行操作。

首先我們需要使用sync指令,將所有未寫的系統緩衝區寫到磁碟中,包含已修改的 i-node、已延遲的塊 I/O 和讀寫對應檔。否則在釋放緩衝的過程中,可能會丟失未儲存的檔案。

#sync

接下來,我們需要將需要的參數寫進/proc/sys/vm/drop_caches檔案中,比如我們需要釋放所有緩衝,就輸入下面的命令:

#echo 3 > /proc/sys/vm/drop_caches

此指令輸入後會立即生效,可以查詢現在的可用記憶體明顯的變多了。

要查詢當前緩衝釋放的參數,可以輸入下面的指令:

#cat /proc/sys/vm/drop_caches

執行以下命令釋放系統記憶體:

sync
echo 3 > /proc/sys/vm/drop_caches

如果嫌每次都要執行該命令比較麻煩,可以建立一個定時任務,每隔一段時間自動執行即可。
儲存上述代碼為clear_mem.sh檔案,賦予許可權可執行

chmod u+x clear_mem.sh

添加定時任務,執行

crontab -e

任務如下(每天三點執行):

* 3 * * * /opt/clear_mem.sh

儲存定時任務即可。

查看記憶體條數命令:

dmidecode | grep -A16 "Memory Device$"
 
 
# sync
# echo 1 > /proc/sys/vm/drop_caches
  echo 2 > /proc/sys/vm/drop_caches
  echo 3 > /proc/sys/vm/drop_caches
cache釋放:
To free pagecache:
echo 1 > /proc/sys/vm/drop_caches

To free dentries and inodes:
echo 2 > /proc/sys/vm/drop_caches

To free pagecache, dentries and inodes:
echo 3 > /proc/sys/vm/drop_caches

說明,釋放前最好sync一下,防止丟資料。

因為LINUX的核心機制,一般情況下不需要特意去釋放已經使用的cache。這些cache起來的內容可以增加檔案以及的讀寫速度。

先說下free命令怎麼看記憶體

linux <wbr>記憶體清理/釋放命令

[root@yuyii proc]# free

total   used   free     shared buffers cached
Mem: 515588 295452 220136 0      2060   64040
-/+ buffers/cache: 229352 286236
Swap: 682720 112 682608

linux <wbr>記憶體清理/釋放命令

其中第一行用全域角度描述系統使用的記憶體狀況:
total——總實體記憶體
used——已使用記憶體,一般情況這個值會比較大,因為這個值包括了cache+應用程式使用的記憶體
free——完全未被使用的記憶體
shared——應用程式共用記憶體
buffers——緩衝,主要用於目錄方面,inode值等(ls大目錄可看到這個值增加)
cached——緩衝,用於已開啟的檔案
note:
    total=used+free
    used=buffers+cached (maybe add shared also)
第二行描述應用程式的記憶體使用量:
前個值表示-buffers/cache——應用程式使用的記憶體大小,used減去緩衝值
後個值表示+buffers/cache——所有可供應用程式使用的記憶體大小,free加上緩衝值
note:
   -buffers/cache=used-buffers-cached
   +buffers/cache=free+buffers+cached

第三行表示swap的使用:

used——已使用
free——未使用
手動執行sync命令(描述:sync 命令運行 sync 子常式。如果必須停止系統,則運行 sync 命令以確保檔案系統的完整性。sync 命令將所有未寫的系統緩衝區寫到磁碟中,包含已修改的 i-node、已延遲的塊 I/O 和讀寫對應檔)

[root@server test]# echo 3 > /proc/sys/vm/drop_caches
[root@server test]# cat /proc/sys/vm/drop_caches
3
                           
!將/proc/sys/vm/drop_caches值設為3
 
有關/proc/sys/vm/drop_caches的用法在下面進行了說明
/proc/sys/vm/drop_caches (since Linux 2.6.16)
Writing to this file causes the kernel to drop clean caches,
dentries and inodes from memory, causing that memory to become
free.

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.