A carga da CPU em alguns threads do Apache é> 10%, outros threads são de 0,2%

A carga da CPU em alguns threads do Apache é> 10%, outros threads são de 0,2%

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>

carga elevada

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).

  1. 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.

  2. 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.

informação relacionada