Optimizar apache puede ser algo tedioso, sobre todo si montamos un server en casa, según desde dónde o cuando, la carga puede comportarse de una forma u otra y según a que destinemos el servidor nos puede ser útil optimizarlo para una u otra cosa. He aqui unos cuantos sencillos cambios en el archivo http.conf para mejorar el rendimiento de apache
fuente: http://www.forosdelweb.com/f58/recetas-para-configuracion-apache-404961/
Podemos modificar grandemente el desempeño de apache cambiando algunos valores en el archivo httpd.conf
Caso 1:
Apache usa demasiado CPU y sin embargo el servidor dispone de bastante memoria libre.
Receta 1:
Timeout 300 KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 5 MinSpareServers 45 MaxSpareServers 60 StartServers 45 MaxClients 500 MaxRequestsPerChild 5
Esto es una receta bastante radical sin embargo con seguridad bajará el uso del cpu siempre y cuando exista memoria libre (NO usar si el servidor tiene poca memoria libre)
Caso 2:
Apache mantiene demasiados procesos abiertos y consume mucha memoria y cpu
Receta 2:
Timeout 15 KeepAlive Off #MaxKeepAliveRequests 100 #KeepAliveTimeout 15 MinSpareServers 5 MaxSpareServers 10 StartServers 5 MaxClients 250 MaxRequestsPerChild 0 RLimitCPU 10 20 RLimitMEM 52428800 62914560 RLimitNPROC 5 10
Esto no hará apache más rápido pero es ideal para servidores muy ocupados
Se puede aumentar MinSpareServers y MaxSpareServers de ser necesario
Caso 3:
Mi servidor tiene un uso de bajo a moderado por lo que deseo optimizar el rendimiento de apache
Receta 3:
Timeout 300 KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 60 MinSpareServers 5 MaxSpareServers 10 StartServers 5 MaxClients 150 MaxRequestsPerChild 0
Esta es una configuración buena para servidores de poco uso
--------------------------------------------------------------------------------
Una explicación sencilla de para que sirve cada parámetro
fuente: http://www.codenb.com/optimizar-apache-16/
Apache es hoy en día uno de los servidores web más usados, desde companias de hosting hasta companias grandes.
Una de las cosas más dificiles es optimizar apache para que consuma poco CPU y MEMORIA. (Probado en servidores Freebsd / unix)
Optimizar apache para consumir menos CPU y MEMORIA
TimeOut
Yo recomendaría esta directiva en 120 y 300 segundos, Esto interfiere en el envio de archivos mediante formularios, peticiones TCP, GET, etc. Por ende hay que saber como setearlo dependiendo el uso del servidor.
KeepAlive
Esta directiva lo que hace es especificar si se quieren conexiones persistentes con el servidor o no. En un principio pensé que consumia más, pero en realidad si se utiliza en ON, por lo general no solo consume menos sino que se crean menos conexiones al puerto 80.
KeepAliveTimeOut
Como dije anteriormente el KeepAlive es útil, pero es mejor siempre setear timeouts chicos, menores a 20 segundos, para que no consuma demasiado CPU.
MaxKeepAliveRequests
Recomendaría esta directiva arriba de 100, pero uds pueden setearla en cuanto quieran ya que mientras más tengan, más rendimiento tiene el servidor con respecto a los clientes.
MinSpareServers
Esta directiva la considero util, pero es una de las que más consume.. En la mayoria de los servidores que armé la setié en 5.
MaxSpareServers
Es recomendable que no sea mayor a 20
StartServers
Esta función la setearía en 8 comunmente, ya que determina cuantos procesos hijos inician al iniciar apache
MaxClients
Esto depende de la magnitud del servidor, yo lo tengo en 450, en otros en 250, varia depende la cantidad de visitas que tienen.
MaxRequestsPerChild
En este momento lo estoy testeando en 0 (ilimitado) para probar si la carga del servidor disminuye (Overload), caso contrario probar con valores un poco altos.
Hasta ahora vimos como optimizar apache para diferentes servidores, Vimos como optimizar PHP con apache y mod_rewrite para la indexación de google, y proximamente veremos como optimizar el codigo para que consuma menos memoria y tarde menos en ejecutarse.