Apache“ httpd”进程,利用了我所有服务器的内存


9

我的小型ec2实例(具有1.7 GB内存)在CentOS的基础上运行Amazon AMI,但Apache出现了一个问题,即Apache使用过多的内存。如果您看一下屏幕截图,在我重新启动httpd服务之前,内存使用率将为90-100%,它将重新开始,从而将其恢复到90%以上的方式。

在此处输入图片说明

对于如何找到问题,我将不胜感激。这是利用所有可用内存的“正常” apache行为吗?还是有可能我必须设法解决的泄漏。此刻,我对可能发生的事情感到困惑。

我们使用的是Apache MPM prefork,没有sql或类似的东西-只是apache。该网站在这里


1
它似乎没有使用任何交换,这是什么问题?
HTTP500 2012年

使用大量内存这一事实是否值得关注?打扰一下我的新手经验,我想这可能是一个错误的假设。也许这是正常现象,尽管Apache的网站访问量很少,但它被设计为使用它可以获取的所有内存?
Amivit 2012年

1
我注意到您正在使用NewRelic,如果您将此行添加到httpd conf中,它也可以记录在apache中花费的时间(可能会有所帮助):RequestHeader set X-Request-Start "%t"如果还没有。转到App Server>概述时,它将显示为“请求队列”-可能有助于您深入了解问题。
KM。

Answers:


8

就像HTTP500所说的那样,除非计算机确实阻塞了,否则您可能不必担心它。看看帮助!Linux吃了我的RAM!。这不是一个非常相似的情况,因为您有进程而不是缓冲区占用了RAM,但距离也不远:您的计算机的物理RAM是要使用的资源,可以与内核缓冲区或备用的Apache worker进程配合使用,以迅速处理传入的信息要求。如果您不使用RAM,则您将为包装盒的尺寸支付过多的费用。

无论如何,如果要使用MPM设置,则Apache文档为http://httpd.apache.org/docs/current/mod/prefork.html

您已经说过该站点的流量很小,您也许可以减少MinSpareServers,StartServers等。然后,您将有更多空闲RAM供内核缓冲区使用,以达到其有害目的。


4

linux使用所有内存是正常的,否则未使用的内存将重新用作磁盘缓存。看到:Linux吃了我的RAM

您可以通过查看的输出来验证这一点,free -m并期望看到如下所示:

             total       used       free     shared    buffers     cached
Mem:          7889       6887        101          0        106       2307
-/+ buffers/cache:       5373       3416
Swap:         1903         17       1886

+/-缓冲区/缓存行是您想要的。它免费添加了缓存的ram,以使您更好地了解实际可用的内存量。在这种情况下,您要注意3416号,而不是101号。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.