Apache:查看哪个页面/虚拟主机正在查杀我的服务器

我无法将networking服务器恢复在线状态。 服务器只是保持垃圾,我不得不重新启动它。

我在一个共享的主机上,所以更难find罪魁祸首。

我怎样才能find哪个特定的页面(或者至less是哪个虚拟主机)在使用CPU的时候会疯狂?

我在CentOS上使用相当标准的Apahce + MySQL + PHP。

谢谢!

可能最好的想法是安装apachetop。 https://code.google.com/p/apachetop/ ,你也可以使用Apache的服务器状态,但是apachetop会使它更具可读性。

一个页面与这个问题真的没有关系。

下面的命令应该输出一个按照CPU百分比sorting的httpd列表,它和httpd worker所在的当前工作目录一致。

这当然假定httpd是罪魁祸首。

IFS=" "; ps -A ho pcpu,comm,pid | grep httpd | sort -k1n \ while read pcpu comm pid; do \ echo -n "${pcpu"}: "l pwdx "${pid}"; done 

我得到的输出类似于;

 0.0: 1850: / 0.0: 1852: / 0.0: 1854: / 0.0: 1853: / 0.0: 1855: / 0.0: 1856: / 0.0: 1857: / 0.0: 1858: / 

这是可行的,因为在虚拟主机内部进行任何工作之前,apache会将目录切换到虚拟主机文档根目录。 因此无论哪个虚拟主机拥有该文档根目录都是罪魁祸首。

如果您有多个使用相同文档根目录的虚拟主机,则需要调查这两个虚拟主机以了解他们的行为。

由于我没有阿帕奇工人占用CPU时间,他们都是0.0,因此没有订购正在发生。

如果问题实际上是一个SQL查询不要期望这显示任何东西。