Estoy ejecutando un sitio de tráfico intenso con mucho contenido dinámico, principalmente generado por el usuario.
El servidor es dedicado y tiene un total de 4 procesadores Intel (R) Xeon (R) CPU X3210 @ 2.13GHz. Necesito conocer los valores óptimos para las directivas de Apache ServerLimit y MaxClients, teniendo en cuenta que el servidor tiene 4 GB de RAM y la base de datos MySQL se ejecuta en un servidor separado. El panel es DirectAdmin con CentOS.
A continuación se encuentran mis directivas actuales, pero durante las horas pico con más de 5k usuarios, se nota un retraso importante, y no es completamente culpa de MySQL, porque las páginas parecen generarse rápidamente (implementé un contador de tiempo de generación de páginas), pero hay un largo retraso de conexión hasta que la página comience a responder y se envíe al navegador.
<IfModule prefork.c>
StartServers 800
MinSpareServers 20
MaxSpareServers 60
ServerLimit 900
MaxClients 900
MaxRequestsPerChild 2000
</IfModule>
Timeout 90
KeepAlive On
KeepAliveTimeout 5
Debo mencionar que al monitorear el servidor usando el comando superior, el uso de la CPU nunca va más allá del 20% ~ 30% en la hora pico. El servidor MySQL también tiene un uso del 30 ~ 50% en ese momento, y estoy trabajando constantemente para solucionar consultas lentas, pero ese es un problema diferente. Sé que no es un cuello de botella de DB porque las páginas estáticas también tardan mucho en cargar en las horas pico.
Cualquier consejo para optimizar estos valores será muy apreciado, gracias.