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

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

我的小型 ec2 实例有 1.7 GB 内存,运行基于 CentOS 的 Amazon AMI,Apache 占用的内存过多,这是一个问题。如果您查看屏幕截图,内存使用率将保持在 90-100%,直到我重新启动 httpd 服务,然后它将重新启动,并重新增加到 90% 以上。

在此处输入图片描述

我将非常感激您能帮助我找到问题所在。这可能是“正常”的 Apache 行为,利用所有可用内存?还是存在需要我查找的泄漏。目前,我有点困惑,不知道到底发生了什么。

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

答案1

正如 HTTP500 所说,除非机器真的堵塞了,否则你不应该担心这个问题。看看救命!Linux 占用了我的内存!。这不是一个非常类似的情况,因为进程而不是缓冲区占用了 RAM,但差别并不大:机器的物理 RAM 是一种资源,可以使用内核缓冲区或备用 Apache 工作进程来及时处理传入的请求。如果您不使用 RAM,那么您就为机器的大小付出了过高的代价。

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

也许您可以减少 MinSpareServers、StartServers 等,因为您已经声明该网站流量较低。这样,您将有更多的可用 RAM 可供内核缓冲区用于其恶意目的。

答案2

Linux 使用所有内存是正常的,未使用的内存将被重新用作磁盘缓存。请参阅:Linux 占用了我的内存

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

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

+/- buffers/cache 行是您想要的。它将缓存的 RAM 添加到空闲内存中,以便让您更好地了解实际可用的内存量。在这种情况下,您需要注意 3416 这个数字,而不是 101。

相关内容