多个apache进程,每个进程超过33%,内存为1.3g?

时间:2012-01-23 21:09:45

标签: apache memory memory-leaks process

我们在Amazon x-large AWS服务器上托管了许多网站。当我重新启动apache时,我将运行 top 并查看apache进程数量(6-8),这将迅速提高cpu百分比和内存百分比高达33%cpu,有时50%cpu和每个高达1.3g的内存!他们会留在顶部 10到20分钟,然后另一个会以相同的行为启动。

如果我对其中一个进程执行 strace ,我将获得如下所示的无效列表:

access("/etc/localtime", R_OK)          = 0

access("/etc/localtime", R_OK)          = 0

access("/etc/localtime", R_OK)          = 0

access("/etc/localtime", R_OK)          = 0

access("/etc/localtime", R_OK)          = 0
...

列表不会停止。如果我离开这些进程,他们最终将停止服务器,我需要重新启动整个虚拟机。

任何人都对流程为何继续访问此文件有任何想法,或者我如何找出原因发生的另一种方法?

1 个答案:

答案 0 :(得分:2)

如果您启用mod_status并设置ExtendedStatus on,那么您可以访问http://server/server-status(或您设置为使用server-status处理程序的其他位置),您将获得每个Apache进程/线程正在做什么的表:

Srv  PID   Acc        M  CPU   SS  Req   Conn  Child  Slot  Client  VHost            Request
⋮
3-0  2129  0/167/167  _  1.13  495 0     0.0   0.33   0.33  ::1     Zia.metrics.net  GET /mrtg/mrtg-l.png HTTP/1.1
4-0  2130  1/150/150  W  1.11  0   0     1.4   0.30   0.30  ::1     Zia.metrics.net  GET /server-status HTTP/1.1
⋮

状态页面包括完整的密钥和字段描述,以及其他一些摘要状态。你应该保护它只对你而言是可见的,而不是互联网:

<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1 ::1
</Location>
ExtendedStatus On

当然,您可以使用Apache中可用的任何访问控制方法(例如,基本或摘要式身份验证)。