协调 mod_status 和 top/mpstat 中的 Apache CPU 使用率

协调 mod_status 和 top/mpstat 中的 Apache CPU 使用率

运行一个流量适中的 LAMP 站点,但偶尔会出现峰值。为了诊断导致高流量期间速度变慢的瓶颈,我一直在查看 mod_status 的输出,发现那里报告的 CPU 使用率与我们所有其他监控工具以及 top 和 mpstat 中显示的 CPU 使用率之间存在惊人的差异。

下面是 mpstat 的输出,这是服务器在正常负载下的典型输出(对于我们所做的事情来说,它应该超负荷了,这使得速度变慢更加令人沮丧):

Linux 2.6.18-274.7.1.el5 (xxxxxxxxxx)   10/25/2012

03:58:14 PM  CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle    intr/s
03:58:14 PM  all    2.02    0.01    0.16    0.41    0.01    0.07    0.00   97.32   3398.80
03:58:14 PM    0    0.14    0.01    0.08    0.01    0.00    0.00    0.00   99.76    999.98
03:58:14 PM    1    0.93    0.01    0.13    0.12    0.00    0.03    0.00   98.78     58.25
03:58:14 PM    2    0.79    0.01    0.09    0.07    0.00    0.03    0.00   99.02     57.08
03:58:14 PM    3    1.44    0.01    0.17    0.57    0.00    0.03    0.00   97.78     33.10
03:58:14 PM    4    0.75    0.01    0.07    0.06    0.00    0.03    0.00   99.08     53.83
03:58:14 PM    5    0.36    0.01    0.04    0.09    0.00    0.01    0.00   99.49      8.92
03:58:14 PM    6    0.85    0.01    0.09    0.19    0.00    0.03    0.00   98.82     48.18
03:58:14 PM    7    1.34    0.00    0.13    0.54    0.00    0.03    0.00   97.96     36.87
03:58:14 PM    8    0.15    0.01    0.03    0.01    0.00    0.00    0.00   99.80      0.14
03:58:14 PM    9    0.94    0.00    0.07    0.08    0.00    0.03    0.00   98.87     51.87
03:58:14 PM   10    1.18    0.01    0.16    0.06    0.00    0.03    0.00   98.56     53.50
03:58:14 PM   11    8.35    0.01    0.58    1.55    0.02    0.30    0.00   89.20    375.46
03:58:14 PM   12    1.08    0.01    0.09    0.06    0.00    0.03    0.00   98.72     56.58
03:58:14 PM   13    1.14    0.00    0.10    0.28    0.03    0.13    0.00   98.32    907.31
03:58:14 PM   14    4.73    0.01    0.28    1.08    0.01    0.14    0.00   93.75    198.19
03:58:14 PM   15    8.15    0.01    0.48    1.76    0.02    0.29    0.00   89.30    459.54

几乎同时,这是 apache 的 mod_status 输出:

Current Time: Thursday, 25-Oct-2012 15:57:55 EDT
Restart Time: Thursday, 25-Oct-2012 15:40:09 EDT
Parent Server Generation: 3
Server uptime: 17 minutes 46 seconds
Total accesses: 8606 - Total Traffic: 283.4 MB
CPU Usage: u322.08 s32.5 cu0 cs0 - 33.3% CPU load
8.07 requests/sec - 272.3 kB/second - 33.7 kB/request
20 requests currently being processed, 492 idle workers 

我并不指望这两者完全一致,但这似乎是一个相当大的差异。我不知道 Apache 是如何得出这个数字的,而且文档似乎相当稀少。

是否有某种方式可以将 Apache 的 CPU 使用率限制在某个任意水平,并且 mod_status 反映了此限制?我继承了此服务器,但初始设置时并未在场,因此完全有可能出于未知原因将某些神秘设置设置为病态值。这可以解释很多,但我在配置中看不到任何相关内容。如果不是这种情况,是否以某种不明显的方式计算该数字,而该数字实际上有意义,或者其中一个来源或另一个来源只是显示不正确的信息?

任何见解都将不胜感激。

答案1

我应该早点弄清楚,但我觉得我第一次检查时数学搞砸了。显然,这完全可以用记录的 CPU 时间除以自上次服务器重启以来的时钟时间来表达。

因此,在这种情况下,用户空间所用时间 322 秒加上系统调用所用时间 32 秒,总 CPU 时间是 354 秒。加上自上次重启以来的 1066 秒,我们得到了 33% 的数字。

显然这不能扩展到多个 CPU,因此我们只考虑可能的 1600% 中的 33%,这似乎更加合理。

答案2

你是对的,mpstat -P ALL显示自服务器启动以来的负载(检查uptime),并且 mod_status 仅显示负载17 minutes 46 seconds

相关内容