過去,我們都會認為 Linux 系統比 Windows 系統更節省記憶體,直到 Linux Kernel 2.6.13 升級到之後,在 vSphere Client 中總是發現 Linux 把記憶體吃的精光?其實原因在於在 Kernel 2.6.13 之後加入 drop caches 的記憶體管理機制,千萬別以為 Linux 比 Windows 佔用記憶體喔。

如果想知道目前運行的 Linux kernel 版本,你可以輸入 uname -r 查看

centos_memory_free

從 free 的顯示中可以看出,這台總共有 499 MB 的實體記憶體,使用 473MB,尚未使用 25MB。並且其中有 290MB 是用於快取(Cache)。

centos_memory_meminfo

透過 meminfo 的資訊能夠更清楚知道實際的 memory 狀態,其實這台真實運作中的 active memory  才 68096 KB 而已呀。

centos_memory_htop

說到記憶體,就當然還是要看一下 htop (top) 的資訊啦,原來這台主要運行 nginx , php-fpm 這些服務。

要釋放掉目前佔用的 cache 其實很容易,我在這直接寫成一個 Script,下次直接呼叫就好了。

[root@NGINX script]# cat drop_caches.sh
#!/bin/bash
# Linux 2.6.16 之後增加 drop caches 機制
#
# /proc/sys/vm/drop_caches 表示目前設定
# 0 表示開啟 cache
# 1 釋放 沒在使用的 cache (一般建議)
# 2 釋放 dentry, inode cache
# 3 = 1 + 2 (不建議)

sync;sync;echo 1 > /proc/sys/vm/drop_caches
sync;sync;echo 0 > /proc/sys/vm/drop_caches
sync;sync;

[root@NGINX script]# sh drop_caches.sh
[root@NGINX script]#

運行 sh 檔後,看看記憶體被放出多少吧。

centos_memory_free2

順便補一張 htop 的圖

centos_memory_htop2

Related Posts Plugin for WordPress, Blogger...

您可以延伸閱讀這些文章:

  1. [教學] 幫 CentOS 加裝新硬碟(ESX Guest VM)
  2. [教學] 在 CentOS 中使用 Proftpd 來架設 FTP 伺服器
  3. [教學] CentOS 6.3 設定 – (1) 基本調效與 SSH 連線
  4. [教學] 在 CentOS 中使用 Nginx 來架設 Web 伺服器
  5. [教學] 三個 Linux 網管好記又好用的 Top 套件
Tagged with:
 
About The Author

阿百

大家好,我是陳彥百(YenPai Chen)

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

*

你可以使用這些 HTML 標籤與屬性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>