Performance

Linux 伺服器上的高記憶體使用率

  • February 23, 2012

我有一個具有以下配置的 LAMP 伺服器。

CPU : Intel(R) Xeon(R) CPU

記憶體:32 GB

硬碟:80 GB

在虛擬環境中執行。

伺服器中的所有東西都執行順利。但我注意到記憶體使用量是伺服器每天都在無緣無故地增加。

這是我伺服器上的目前記憶體使用情況。

# free -g
            total       used       free     shared    buffers     cached
Mem:            31         13         17          0          0         10
-/+ buffers/cache:          1         29
Swap:            2          0          2

您可以在下面看到過去 8 週的記憶體使用情況。 http://i.stack.imgur.com/543jh.png

我已經執行了以下命令來查找每個程序消耗了多少記憶體。

# ps -eo size,pid,user,command --sort -size | awk '{ hr=$1/1024 ; printf("%13.2f Mb ",hr) } { for ( x=4 ; x<=NF ; x++ ) { printf("%s ",$x) } print "" }'
        0.00 Mb COMMAND 
     2253.62 Mb /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --socket=/var/lib/mysql/mysql.sock 
     1171.66 Mb java -jar /etc/vmagent/bin/VMAgent.jar 
      138.27 Mb /sbin/audispd 
      127.75 Mb /usr/sbin/named -u named -c /etc/named.conf -u named -t /var/named/run-root 
       74.29 Mb auditd 
       73.03 Mb automount 
       43.14 Mb /usr/bin/spamd --username=popuser --daemonize --nouser-config --helper-home-dir=/var/qmail --max-children 5 --create-prefs --virtual-config-dir=/var/qmail/mailnames/%d/%l/.spamassassin --pidfile=/var/run/spamd/spamd_full.pid --socketpath=/tmp/spamd_full.sock 
       43.14 Mb spamd child 
       43.14 Mb spamd child 
       37.13 Mb /usr/sbin/httpd 
       37.02 Mb /usr/sbin/httpd 
       36.52 Mb /usr/sbin/httpd 
       36.46 Mb /usr/sbin/httpd 
       36.23 Mb /usr/sbin/httpd ................

為了進行故障排除,我重新啟動了 MySQL 和 APACHE 伺服器。但結果是一樣的。重新啟動整個伺服器將解決問題,但我想知道真正的問題是什麼。

如果您對此問題有任何想法,請告訴我。

謝謝,

阿倫小號

-/+ buffers/cache: 1

您僅使用1 GB。剩下的就是系統記憶體。

這是完全正常的。如果您不想使用記憶體,請將其從伺服器中取出並放在您的辦公桌上。空閒記憶體是浪費的記憶體。

與大多數現代作業系統一樣,Linux 可以直接將記憶體從一種用途轉換為另一種用途。在中間免費使用它會帶來成本,而不會帶來任何好處。所以明智的作業系統不會這樣做,除非他們必須這樣做。

僅在某些非常特殊的情況下才需要空閒記憶體。例如,需要空閒記憶體來臨時保存通過網路接收的數據,直到作業系統可以處理它。因為空閒記憶體具有與之相關的高成本(就性能而言,就好像該記憶體不存在),系統只保留這些特殊情況所需的空閒記憶體。

引用自:https://serverfault.com/questions/362147