Con PHP-FPM
Si en lugar de mpm_prefork estás usando mpm_event con PHP-FPM, la configuración del módulo esta en:
sudo nano /etc/apache2/mods-available/mpm_event.conf
Y la configuración agrega unos parámetros mas:
<IfModule mpm_prefork_event> StartServers 5 MinSpareThreads 25 MaxSpareThreads 75 ThreadLimit 64 ThreadsPerChild 25 MaxRequestWorkers 250 MaxConnectionsPerChild 0 </IfModule>
Ahora únicamente faltaría reiniciar el servicio Apache mediante el comando:
sudo /etc/init.d/apache2 restart
Con esto ya podríamos disfrutar de nuestro servidor web optimizado.
Información extra:
MaxClients
La directiva MaxClients establece el número máximo de conexiones simultáneas que pueden ser soportadas por el servidor. No debe configurarse con un valor demasiado bajo para que las nuevas conexiones no deban ponerse en cola, lo que provocaría un timeout en las conexiones y los recursos del servidor se quedarían sin usar. Si por el contrario establecemos este valor demasiado alto, el servidor podría saturarse y el tiempo de respuesta se degradará drásticamente. El valor adecuado para la directiva MaxClients se puede calcular así:
MaxClients = RAM dedicada a Apache / Profundidad máxima de los procesos hijo (el tamaño de los procesos hijo para servir archivos estáticos está sobre los 2-3 MB. Para servir archivos dinámicos está sobre los 15MB).
Si hay más usuarios simultáneos que los configurados en MaxClients, las peticiones se pondrán en cola hasta el número especificado en la directiva ListenBackLog. Debes aumentar la directiva ServerLimit si quieres aumentar la directiva MaxClients por encima de 256.
MinSpareServers, MaxSpareServers y StartServers
Las directivas MaxSpareServers y MinSpareServers determinan cuántos procesos hijo se mantendrán a la espera de las solicitudes. Si MinSpareServers tiene un valor demasiado bajo y llegan muchas peticiones, Apache tendrá que generar procesos adicionales secundarios para atender esas peticiones. La creación de procesos hijo debe evitarse en lo posible. Si el servidor está ocupado creando procesos hijo, no podrá atender las solicitudes de los clientes de forma inmediata. La directiva MaxSpareServers no debe ser demasiado alta, ya que podría causar problemas de recursos porque los procesos hijo los consumen.
Configura MaxSpareServers y MinSpareServers para que Apache no necesite crear frecuentemente más de 4 procesos hijo por segundo (Apache puede crear un máximo de 32 procesos hijo por segundo). Cuando se creen más de 4 hijos por segundo se generará un registro en el error log.
La directiva StartServers establece el número de procesos hijo creados al inicio. Apache continuará creando procesos hijo hasta que alcance el valor estipulado en la directiva MinSpareServers. Esto no no tiene mucha incidencia en el rendimiento del servidor si éste no se reinicia con frecuencia. Si hay muchas peticiones y Apache se reinicia con frecuencia, ajusta esta directiva a un valor relativamente alto.
MaxRequestsPerChild
La directiva MaxRequestsPerChild establece el número máximo de solicitudes que un proceso hijo puede manejar. Después de alcanzar ese valor, el proceso hijo morirá. Este valor es «0» por defecto, lo que significa que el proceso hijo nunca caducará. Es conveniente otorgarle a esta directiva un valor de unos miles para ayudar a prevenir un uso excesivo de la memoria del servidor, ya que después de cumplir con cierto número de peticiones el proceso hijo morirá. No establezcas un valor demasiado bajo para que las solicitudes que debe atender el proceso hijo nunca estén por encima.
KeepAlive y KeepAliveTimeout
La directiva KeepAlive permite que se reciban múltiples solicitudes a través de la misma conexión TCP. Esto será útil sobretodo cuando sirva páginas con gran cantidad de imágenes. Si KeepAlive estuviese desactivado, el servidor realizaría una conexión diferente para cada imagen.
KeepAliveTimeout establece cuánto tiempo tendrá que esperar hasta recibir la próxima petición. Ajústalo a un valor bajo, entre 2 y 5 segundos. Si el valor es demasiado alto, los procesos hijo estarán a la espera sin ser productivos hasta que se agote el tiempo para poder seguir sirviendo a nuevos clientes.
Referencias:
https://www.proxadmin.es/blog/configurar-apache-para-maximo-rendimiento/
https://blog.desdelinux.net/como-aumentar-conexiones-simultaneas-apache/
https://cmdref.net/middleware/web/httpd/maxclients.html