我有一个运行WordPress网站的apache框。
出于某种原因,似乎一些Apache线程正在使用大部分的CPU(10%以上),其余的很less(0.1〜)。
该机箱是双CPU, Intel(R)Xeon(R)CPU E5620 @ 2.40GHz(每个CPU有4个内核和8个线程) 。
线程显示的原因是什么,如果他们不是每个用户的CPU相等?
是否有任何一套Apache优化来帮助减less负载(CentOS,基于PHP和MySQL的Apache2安装)?
prefork和工人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>

出于某种原因,似乎一些Apache线程正在使用大部分的CPU(10%以上),其余的很less(0.1〜)。
你需要注意的是你的实际活动。 在您提供的快照中,正在运行的任务数为7,负载为4。
所以,在这个时候需要服务的人数是7(可能 – 我只能看到6归因于httpd)。 其余的是睡觉的过程,不会醒来,除非发生一些事件。
在某些进程中CPU占用率高的原因是另一个较低的原因,因为在top测量的给定的第二个时间段内,只有很多这样的CPU需要处理。
有没有任何一套Apache的优化,以帮助减less负载?
那么,你的负载可能会徘徊在3到4左右,因为一半的运行过程可能在5秒内没有完成(负载每5秒钟在内部测量一次)。
那里有太多活跃的apache进程。 什么是prefork设置? 尝试设置更可行的东西。 最大72可能是一个合理的开始和调整从那里。 即使你可以为每个人服务于这个数量的过程,你也会导致所有的过程以相同的比例放慢速度,并按照服务的人数上升。 最好尽快提供服务,拒绝不能提供的服务,而不是为每个人服务都很慢。
我感觉到你的wordpress页面的一些部分在计算上是昂贵的。 尝试caching一些更昂贵的内容。