2012-01-23 19 views
1

我们在亚马逊x-large AWS服务器上托管了大量网站。当我重新启动apache时,我将运行top并查看apache进程数量(6-8),这将快速提高cpu百分比和内存百分比,最高cpu为33%,有时为cpu的50%,最高为1.3g每个记忆!他们将停留在顶部 10 - 20分钟,然后另一个将启动相同的行为。多个apache进程每个都有超过33%cpu和1.3g内存?

,如果我对这些过程的一个做一个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 
... 

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

任何人有任何想法,为什么进程继续访问此文件,或另一种方法,我怎么能找出为什么发生这种情况?

+0

您是否尝试删除托管在那里的网站,并逐个添加它们直到出现此行为?这可能是其中一个站点的错误。 – cdeszaq

+0

这是一个有趣的方法,但不幸的是,我无法将网站关闭任何时间。你认为有什么方法可以跟踪哪个网页/文件负责? – bmilesp

+0

是的......让每个网站下来,看看它是否修复它。如果人们抱怨,说这是一个安全的事情。由于您已经重新启动了Apache,因此您至少已经将它们关闭了一些。 – cdeszaq

回答

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的任何可用的访问控制方法(例如,基本或摘要式身份验证),当然。

相关问题