多核服务器上仅一个 CPU 负载

多核服务器上仅一个 CPU 负载

顶部 - 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 34​​m 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 中的相应部分):这将启用状态网页,其中显示进程列表及其当前正在提供的服务等。

希望这可以帮助! :)

洛基

相关内容