某些 Apache 线程的 CPU 负载 >10%,其他线程为 0.2%

某些 Apache 线程的 CPU 负载 >10%,其他线程为 0.2%

我有一个运行 WordPress 网站的 Apache 盒子。

由于某种原因,似乎一些 apache 线程使用了大部分 CPU (10%+),而剩余的只使用了很少 (0.1~)。

该盒子是双CPU,Intel(R) Xeon(R) CPU E5620 @ 2.40GHz(每个 CPU 有 4 个核心和 8 个线程)

线程这样显示的原因是什么?每个用户的 CPU 不应该是相等的吗?

是否有任何一组 apache 优化可以帮助减少负载(CentOS,使用 PHP 和 MySQL 安装的基本 apache2)?

prefork 和 worker MPM 设置如下为默认设置

# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# ServerLimit: maximum value for MaxClients for the lifetime of the server
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000
</IfModule>

# worker MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule worker.c>
StartServers         4
MaxClients         300
MinSpareThreads     25
MaxSpareThreads     75
ThreadsPerChild     25
MaxRequestsPerChild  0
</IfModule>

高负荷

答案1

由于某种原因,似乎一些 apache 线程使用了大部分 CPU (10%+),而剩余的只使用了很少 (0.1~)。

这里需要特别注意的是您的实际活动。在您提供的快照中,正在运行的任务数为 7,负载为 4。

因此,此时需要服务的进程数为 7(可能 —— 但我只能看到 6 个归因于 httpd)。其余进程处于休眠状态,除非发生某些事件,否则不会唤醒。

某些进程的 CPU 使用率较高而其他进程的 CPU 使用率较低的原因是,在给定的秒内,只有这么多进程有事可做top

是否有任何一组 apache 优化可以帮助减少负载?

嗯,您的负载可能在 3 到 4 左右徘徊,因为您一半的正在运行的进程可能无法在 5 秒内完成(每五秒内部测量一次负载)。

  1. 那里有太多活动的 Apache 进程。您的预分叉设置是什么?尝试将其设置为更可行的值。最大 72 可能是一个合理的起点,然后从那里开始调整。即使您可以使用该数量的进程为所有人提供服务,您也会导致所有进程的速度以相同的比例减慢,并且负载会随着被服务的人数而增加。最好快速提供您可以提供的服务并拒绝您无法提供的服务,而不是非常缓慢地为所有人提供服务。

  2. 我感觉你的 WordPress 页面的某些部分计算量很大。尝试缓存一些计算量较大的内容。

相关内容