混淆在Apache服务器状态的CPU负载

Apache服务器状态(mod_status)显示非常低的CPU使用率,即使我看到超过90%的顶级输出。

在服务器状态页面中显示:

CPU Usage: u92.17 s14.87 cu0 cs0 - .0178% CPU load 

从最高输出:

 1187 apache 20 0 439m 204m 6000 S 23.2 6.8 0:24.52 /usr/sbin/httpd 

为什么发生这种情况? 我们不能使用服务器状态页来检查Apache的CPU使用情况吗?

(显示的最高输出不是满的,因为它有很多的http进程运行,并有很多的CPU …即使它累积了300%,它仍然显示在服务器状态页面0.224%!)

请注意,这和Apache服务器状态结果的混淆结果是不一样的

有两件事可以帮助你理解你所看到的:

  1. 来自server-status的0.0178%负载是Apache启动以来的平均CPU负载。 它不会像CPU看起来那样在CPU使用率上出现尖峰。 从你的数字,我猜测阿帕奇是大约7天前开始((92.17 + 14.87)/0.0178*100/86400=6.96)。
  2. 至less在prefork模式(不确定工作模式)中,可能会有多个“http”进程列在最上面。 其中之一将是“父母”过程,其余的都是其子女在需要时提供服务。 有些孩子可能比其他孩子有更多的CPU /内存使用情况。

服务器状态的CPU使用情况对于Apache使用的CPU有多less指标是很有用的,但对于识别哪个顶端更有用的负载峰值则无用。