Optimización de apache

manuales - Linux

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:

Código:
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:

Código:
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:

Código:
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 CPUMEMORIA

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.