我的Centos服务器是否泄漏内存?

我收到有关虚拟化服务器内存使用情况的一些冲突信息。 最令人震惊的消息是:

每天服务器内存使用情况

请注意,服务器只有4GB的RAM分配,即使提交显示12GB。

另外,如果我运行ps aux | grep httpd ps aux | grep httpd我得到以下内容:

 root 1566 0.1 9.5 580392 375540 ? Ss Jun18 96:15 /usr/local/apache/bin/httpd -k start -DSSL root 4212 0.0 9.4 580388 371948 ? S 08:01 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 7674 0.6 9.5 580392 373600 ? S 08:26 0:02 /usr/local/apache/bin/httpd -k start -DSSL nobody 10894 0.6 9.5 580532 373508 ? S 08:28 0:01 /usr/local/apache/bin/httpd -k start -DSSL nobody 11668 0.6 9.5 580392 373600 ? S 08:29 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 11669 0.6 9.5 580392 373512 ? S 08:29 0:01 /usr/local/apache/bin/httpd -k start -DSSL nobody 11975 0.6 9.5 580392 373492 ? S 08:29 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 12108 0.7 9.5 580392 373492 ? S 08:29 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 12993 0.6 9.5 580392 373492 ? S 08:30 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 13080 0.6 9.5 580392 373492 ? S 08:30 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 13211 0.6 9.5 580392 373492 ? S 08:30 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 13496 0.6 9.5 580392 373520 ? S 08:30 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 13497 0.6 9.5 580392 373492 ? S 08:30 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 13829 0.6 9.5 580392 373492 ? S 08:30 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 13858 0.6 9.5 580392 373492 ? S 08:30 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 13963 0.6 9.5 580392 373484 ? S 08:30 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 14070 0.7 9.5 580392 373492 ? S 08:31 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 14290 0.6 9.5 580392 373492 ? S 08:31 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 14404 0.6 9.5 580392 373484 ? S 08:31 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 14745 0.6 9.5 580392 373492 ? S 08:31 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 14850 0.6 9.5 580392 373484 ? S 08:31 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 14957 0.5 9.5 580392 373484 ? S 08:31 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 15061 0.6 9.5 580392 373492 ? S 08:31 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 15174 0.8 9.5 580392 373492 ? S 08:31 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 15228 0.6 9.5 580392 373484 ? S 08:31 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 15263 0.4 9.5 580392 373484 ? S 08:31 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 15264 0.5 9.5 580392 373484 ? S 08:31 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 15290 0.7 9.5 580392 373484 ? S 08:31 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 15291 0.5 9.5 580392 373484 ? S 08:31 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 15294 0.4 9.5 580392 373484 ? S 08:31 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 15296 0.6 9.5 580392 373492 ? S 08:31 0:00 /usr/local/apache/bin/httpd -k start -DSSL nobody 15401 0.5 9.5 580392 373484 ? S 08:32 0:00 /usr/local/apache/bin/httpd -k start -DSSL root 15506 0.0 0.0 103228 840 pts/0 S+ 08:32 0:00 grep httpd 

这总计超过294.5%的内存使用。

top有类似的结果。

但是,如果我运行free -m我得到这个:

  total used free shared buffers cached Mem: 3831 3647 184 0 257 2358 -/+ buffers/cache: 1031 2799 Swap: 4031 29 4002 

这对我来说似乎没有问题,没有过度记忆的迹象。

服务器相对较快,没有exception的停机/低迷,我想保持这种方式。 是不正常的读数只是一个exception,或更严重的事情?

你有足够的记忆。 如果你使用的内存激增到最大值和缓冲区,并且caching将会很低,那么你将会遇到内存问题,使用SWAP会激化,那么你可能会遇到空闲的RAM问题。 从你的post,一切都OK ….

这是简单的解释什么是内存是:

Committed_AS: An estimate of how much RAM you would need to make a 99.99% guarantee that there never is OOM (out of memory) for this workload. Normally the kernel will overcommit memory. That means, say you do a 1GB malloc, nothing happens, really. Only when you start USING that malloc memory you will get real memory on demand, and just as much as you use. So you sort of take a mortgage and hope the bank doesn't go bust. Other cases might include when you mmap a file that's shared only when you write to it and you get a private copy of that data. While it normally is shared between processes. The Committed_AS is a guesstimate of how much RAM/swap you would need worst-case.

这里是孔说明http://www.redhat.com/advice/tips/meminfo.html

所以你没有任何问题,记忆万物确定这些读数是正常的。

有一个与你的Apache模型共享内存使用情况,这很好。 ps / top不会显示确切的用法,这不是一件容易的事情。 试试http://www.pixelbeat.org/scripts/ps_mem.py