顶部 - 01:50:56 启动 15 天,30 分钟,4 个用户,平均负载:0.89、1.17、1.11 任务:总计 170 个,1 个正在运行,169 个正在休眠,0 个已停止,0 个僵尸
Cpu0 : 56.6%us, 5.7%sy, 0.0%ni, 36.8%id, 0.0%wa, 0.0%hi, 0.9%si, 0.0%st
Cpu1 : 0.9%us, 0.0%sy, 0.0%ni, 99.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu2 : 8.3%us, 0.9%sy, 0.0%ni, 90.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu3 : 1.0%us, 1.0%sy, 0.0%ni, 98.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu4 : 9.3%us, 1.2%sy, 0.0%ni, 88.4%id, 0.0%wa, 0.0%hi, 1.2%si, 0.0%st
Cpu5 : 0.9%us, 0.0%sy, 0.0%ni, 99.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu6 : 3.7%us, 0.9%sy, 0.9%ni, 94.4%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu7 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
内存:总计 8180768k,已使用 7169736k,可用 1011032k,缓冲区 756132k 交换:总计 2104472k,已使用 24k,可用 2104448k,缓存 5849080k
19033 quinroot 20 0 384m 45m 19m S 5 0.6 0:31.52 httpd
19292 quinroot 20 0 375m 35m 18m R 5 0.4 0:15.10 httpd
19474 quinroot 20 0 368m 26m 16m S 5 0.3 0:04.26 httpd
19344 quinroot 20 0 373m 34m 18m S 5 0.4 0:13.30 httpd 19351 quinroot
20 0 373m 33m 18m S 5 0.4 0:12.82 httpd
19455 quinroot 20 0 369m 28m 17m S 5 0.4 0:06.20 httpd
19476 quinroot 20 0 369m 26m 15m R 5 0.3 0:04.48 httpd
19478 quinroot 20 0 368m 25m 14m S 5 0.3 0:04.40 httpd 19540 quinroot
20 0 367m 24m 15m S 5 0.3 0:01.28 httpd
19542 quinroot 20 0 367m 24m 15m S 5 0.3 0:01.26 httpd 19173
quinroot 20 0 379m 41m 19m S 4 0.5 0:24.40 httpd
19290 quinroot 20 0 375米 34米 18米 S 4 0.4 0:15.28 httpd
19349 quinroot 20 0 373米 31米 16米 S 4 0.4 0:12.86 httpd
19454 quinroot 20 0 369米 29米 17米 S 4 0.4 0:06.14 httpd
19475 quinroot 20 0 368米 26米 15米 S 4 0.3 0:04.10 httpd
19544 quinroot 20 0 367米 23米 14米 S 4 0.3 0:01.28 httpd
19099 quinroot 20 0 380米 42米 20米 S 3 0.5 0:25.90 httpd
19293 quinroot 20 0 374m 34m 17m R 3 0.4 0:15.24 httpd
19537 quinroot 20 0 367m 23m 14m S 3 0.3 0:01.08 httpd 19545 quinroot 20 0 367m 23m 14m S 3 0.3
0:01.16 httpd
19526 root 20 0 16940 1348 948 R 1 0.0 0:00.16 top
1 root 20 0 1064 392 324 S 0 0.0 0:07.62 init
2 root 15 -5 0 0 0 S 0 0.0 0:00.00 kthreadd
为什么 Apache 总是只使用一个 CPU?
答案1
通过查看平均负载,我怀疑 Web 服务器不够忙(即处理足够多的并发请求)而需要大量使用多个 CPU。
由于您有许多大部分处于空闲状态的 httpd 进程,因此您可能会使用MPM 预分叉并将 MinSpareServers 设置在 20 左右。拥有一定数量的空闲 httpd 进程是正常的,当您的 Web 服务器的流量增加时,这些进程可用于帮助 Apache 快速做出响应。
上面列出的某个时间的瞬时 CPU 使用率并不能很好地反映长期使用情况(例如,这可能是一个不幸的样本)。但是,为什么 CPU #0 可能受到青睐:
- 具有较低 PID 的 Apache MPM 预工作进程往往会完成更多工作(正如该评论所证实的)。例如,您列出的具有最高 TIME 的两个进程具有最低的进程 ID(19033、19099)。
- Linux 倾向于尽可能地将进程保留在同一个 CPU 上(为了提高缓存性能):请参阅 man taskset(“请注意,Linux 调度程序还支持自然的 CPU 亲和性:出于性能原因,调度程序会尝试尽可能长时间地将进程保留在同一个 CPU 上。”)。由于随机选择 CPU 不是最优的(考虑功耗),因此重复使用 CPU #0 似乎是明智的。
因此,我想说您的网络服务器主要由几个进程提供服务,并且出于性能原因,Linux 倾向于在同一个 CPU 上运行它们。
如果你想要了解有关 Apache 进程的更多信息,请启用扩展状态指令(取消注释 httpd.conf 中的相应部分):这将启用状态网页,其中显示进程列表及其当前正在提供的服务等。
希望这可以帮助! :)
洛基