Mi sitio web es superlento pero el % de CPU es solo del 25 %

Mi sitio web es superlento pero el % de CPU es solo del 25 %

Tengo 2 servidores para mi sitio web:

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

El servidor MySQL siempre está bien (se utiliza entre el 30 y el 50% de la CPU).

Pero el servidor Apache se vuelve SUPERLENTO cuando mi sitio web comienza a recibir 10.000 visitantes conectados simultáneamente (5.000 páginas cargadas por minuto). Lo extraño es que este servidor aún no alcanza su límite porque la carga de memoria de la CPU ronda el 20-30%.

Esto es lo que topregresa en el servidor Apache (cuando el sitio web es superlento con 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

Es como si hubiera un límite en la carga de CPU de este servidor.

Y esta es la configuración del servidor Apache:

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

Y debo precisar que ayer tenía una RAM de 128 GO para el servidor Apache y el sitio web podía admitir 13.000 visitantes conectados simultáneamente antes de que comenzara a volverse súper lento. Así que decidí cambiar por una RAM de 256GO, pero el resultado es peor...

¿Algunas ideas?

Estoy usando WHM.

(Lo siento por mi ingles)

Respuesta1

"La directiva MaxClients establece el límite en la cantidad de solicitudes simultáneas que se atenderán. Cualquier intento de conexión que supere el límite de MaxClients normalmente se pondrá en cola, hasta un número basado en la directiva ListenBacklog. Una vez que se libera un proceso secundario al final de una solicitud diferente, la conexión será atendida" (Ref.http://httpd.apache.org/docs/2.2/mod/mpm_common.html#maxclients).

Si profundiza en los documentos relacionados, encontrará cómo administrar también "serverlimit" y "maxrequestsperchild" de acuerdo conprehorquilla/obreroMPM, para evitar la situación descrita por Michael Hampton (¡muy explicativa!).

Además, al consultar los registros, debería encontrar algunas evidencias al respecto.

información relacionada