Linux服务器上内存使用率高

我有一个LAMP服务器,具有以下configuration。

CPU:Intel(R)Xeon(R)CPU

内存:32 GB

硬盘:80 GB

在虚拟环境中运行。

服务器中的所有东西都运行平稳。 但是我注意到,RAM的使用量是服务器每天都在增加,没有任何理由。

这是我的服务器上当前的内存使用情况

# 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

我已经执行了下面的命令来查找每个进程消耗了多less内存。

 # 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服务器。 但结果是一样的。 重新启动整个服务器将解决这个问题,但我想知道什么是真正的问题。

如果你对这个问题有任何的想法,请告诉我。

谢谢,

阿伦S

-/+ buffers/cache: 1

您只使用 1 GB。 其余的是系统caching。

这是非常正常的。 如果您不想使用内存,请将其从服务器中取出并放在您的桌面上。 空闲的内存浪费了内存。

与大多数现代操作系统一样,Linux可以直接将内存从一种用途转移到另一种用途。 让它在中间自由与其相关的成本,没有相关的好处。 所以明智的操作系统不这样做,除非他们必须这样做。

只有在某些特定情况下才需要空闲内存。 例如,需要空闲内存来暂时保存通过networking接收到的数据,直到操作系统能够处理它为止。 由于空闲内存与其相关的成本较高(就好像内存不在性能范围内那样),系统只会保留尽可能多的内存以满足这些特殊情况的需要。

阅读这个: Linux吃了我的RAM