我们有许多网站托管在Amazon大型AWS服务器上。当我重新启动apache时,我将运行top,并看到apache进程的数量(6-8个),这些进程将快速地将cpu百分比和内存百分比提高到33%,有时是50%的cpu和高达1.3g的内存!他们将在top待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
...名单不会停止。如果我不让这些进程继续运行,它们最终会使服务器停止工作,我需要重新启动整个虚拟机。
有谁知道为什么这个过程会一直访问这个文件,或者另一种方法来找出为什么会发生这种情况呢?
发布于 2012-01-24 18:23:16
如果启用mod_status并设置ExtendedStatus on,则可以访问http://server/server-status (或设置为使用server-status处理程序的其他位置),并得到每个http://server/server-status进程/线程正在执行的操作的表:
VHost 3-0 2129 0/167_ 1.13 495 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 /服务器-状态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中可用的任何访问控制方法(例如,Basic或Digest身份验证)。
https://stackoverflow.com/questions/8978602
复制相似问题