Eu tenho uma caixa Apache executando um site WordPress.
Por alguma razão, parece que alguns threads do Apache estão usando a maior parte da CPU (10% +) e o restante pouco (0,1 ~).
A caixa é uma CPU dupla,CPU Intel(R) Xeon(R) E5620 a 2,40 GHz (cada CPU possui 4 núcleos e 8 threads).
Qual é a razão pela qual os threads são mostrados assim, eles não deveriam ser iguais em CPU por usuário?
Existe algum conjunto de otimizações do Apache para ajudar a reduzir a carga (CentOS, instalação básica do Apache2 com PHP e MySQL)?
As configurações de pré-forquilha e MPM do trabalhador são padrão abaixo
# 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>
Responder1
Por alguma razão, parece que alguns threads do Apache estão usando a maior parte da CPU (10% +) e o restante pouco (0,1 ~).
O que você precisa prestar mais atenção aqui é a sua atividade real. No instantâneo que você forneceu, o número de tarefas em execução é 7, com carga de 4.
Portanto, neste momento, o número de pessoas que precisavam de atendimento era 7 (provavelmente - só consigo ver 6 atribuídos ao httpd). O restante são processos adormecidos que não serão ativados a menos que algum evento aconteça.
A razão pela qual você tem uma alta porcentagem de CPU em alguns processos e menor em outros é porque apenas alguns deles têm algo a fazer dentro de um determinado segundo período medido em top
.
Existe algum conjunto de otimizações do Apache para ajudar a reduzir a carga?
Bem, sua carga provavelmente gira em torno de 3 a 4 porque metade dos processos em execução provavelmente não são concluídos em 5 segundos (a carga é medida internamente a cada cinco segundos).
Há muitos processos apache ativos lá. Quais são as configurações do seu pré-garfo? Tente configurá-lo para algo mais viável. Um máximo de 72 pode ser um início e ajuste razoáveis a partir daí. Mesmo que você pudesse atender a todos com esse número de processos, você faria com que todos os processos ficassem mais lentos na mesma proporção e a carga aumentasse de acordo com o número de pessoas atendidas. Melhor servir o que você pode rapidamente e rejeitar o que não pode servir do que servir a todos muito lentamente.
Tenho a sensação de que algumas partes da sua página wordpress são computacionalmente caras. Tente armazenar em cache parte desse conteúdo mais caro.