Meu site é muito lento, mas a% CPU é de apenas 25%

Meu site é muito lento, mas a% CPU é de apenas 25%

Tenho 2 servidores para meu site:

  • Um servidor 256GO RAM 20c/40t para MySQL
  • Um servidor 256GO RAM 20c/40t para Apache

O servidor MySQL está sempre ok (30-50% da CPU é usada).

Mas o servidor Apache se torna SUPERLENTO quando meu site começa a receber 10.000 visitantes conectados simultaneamente (5.000 páginas carregadas por minuto). O que é estranho é que este servidor ainda não atingiu seu limite porque a carga de memória da CPU está em torno de 20-30%.

É isso que topretorna no servidor Apache (quando o site está superlento com 10.000 visitantes).

top - 22:04:17 up 22:34,  1 user,  load average: 12.61, 13.59, 13.47
Tasks: 2139 total,  20 running, 2119 sleeping,   0 stopped,   0 zombie
%Cpu(s): 28.2 us,  7.2 sy,  0.0 ni, 63.0 id,  0.0 wa,  0.0 hi,  1.6 si,  0.0 st
KiB Mem : 26410644+total, 17146396+free,  8632064 used, 84010416 buff/cache
KiB Swap:  1047548 total,  1047548 free,        0 used. 25449820+avail Mem

É como se houvesse um limite na carga da CPU deste servidor.

E esta é a configuração do servidor Apache:

keepalive: Off
keepalivetimeout: 2
maxclients: 3000
maxkeepaliverequests: 1000
maxrequestsperchild: 15000
maxspareservers: 300
minspareservers: 150
serverlimit: 3000
startservers: 1000
timeout: 300

E devo dizer que ontem eu estava em uma RAM de 128 GO para o servidor Apache e o site poderia suportar 13.000 visitantes conectados simultaneamente antes de começar a ficar superlento. Então resolvi trocar por uma RAM de 256GO, mas o resultado é pior...

Alguma ideia?

Estou usando o WHM.

(Desculpe pelo meu Inglês)

Responder1

"A diretiva MaxClients define o limite para o número de solicitações simultâneas que serão atendidas. Qualquer tentativa de conexão acima do limite MaxClients normalmente será enfileirada, até um número baseado na diretiva ListenBacklog. Assim que um processo filho for liberado no final de uma solicitação diferente, a conexão será então atendida" (Ref.http://httpd.apache.org/docs/2.2/mod/mpm_common.html#maxclients).

Se você olhar mais a fundo nos documentos relacionados, descobrirá como gerenciar também "serverlimit" e "maxrequestsperchild" de acordo com opré-garfo/trabalhadorMPM, para evitar a situação retratada por Michael Hampton (muito explicativa!).

Além disso, verificando os registros, você deverá encontrar algumas evidências sobre isso.

informação relacionada