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 负载。它根本不会像您在 top 中看到的那样出现 CPU 使用率峰值。根据您的数字,我猜 Apache 大约在 7 天前启动((92.17+14.87)/0.0178*100/86400=6.96)。
- top 中可能会列出多个“http”进程,至少在 prefork 模式下是这样(不确定 worker 模式)。其中一个进程将是“父”进程,其余的都是其子进程,根据需要处理请求。一些子进程的 CPU/内存使用率可能高于其他子进程。
服务器状态中的 CPU 使用率可以作为 Apache 使用 CPU 数量的平均指南,但对于识别负载峰值(其中顶部更有用)几乎没有用处。