Optimització d’Apache: keepalive

Apache és el servidor web més utilitzat de tot el món (15/11/2011) i per tant una de les tasques més importants a realitzar és la d’obtenir el màxim rendiment possible d’aquest servidor.  Aquí és on entra en joc Keepalive.

  

Què és el KeepAlive?

El protocol HTTP és un protocol en el qual és fa una connexió per obtenir un fitxer i aquesta connexió es tanca quan es reb el fitxer, el que fa les coses molt fàcils però no gaire eficients. Per aconseguir aquesta eficiencia es va crear una cosa anomenada KeepAlive amb la qual tant el servidor web com el navegador utilitzen la mateixa connexió per transferir múltiples fitxers.

La utilització  del Keepalive comporta beneficis i inconvenients. Pel cantó dels avantatges tenim que amb el KeepAlive activat aconseguim millorar la velocitat del nostre servidor web i redueix l’utilització de CPU però, per contra, s’incrementa l’utilització de de memòria en el servidor  ja que Apache ha de mantenir obertes les connexions esperant noves peticions per a les connexions obertes. 

Necessito utilitzar Apache KeepAlive?

Per tant la decissió de fer servir KeepAlive  o no depen de molts factors i tal i com s’ha comentat anteriorment, la RAM és un d’ells. Si en tenim poca serà milltr tenir-lo desactivat. Per contra si tenim poca CPU KeepAlive ens anirà molt bé si està actiu. També s’ha de tenir en compte si el nostre site tindrà molt de transit durant el dia pero espaiat en el temps o bé concentrat tot en un moment concentrat del temps. En el primer cas ens serà útil tenir KeppAlive actiu, mentre que en el segon cas ens interessarà mantenir-lo desactivat.

Com es configura Apache KeepAlive?

Com ja he comentat moltes vegades, jo faig servir normalment la distribució CentOS, en aquesta distribució hi ha un fitxer anomenat httpd.conf que es localitza a la següent ruta /etc/httpd/conf. Dins d’aquest fitxer hi ha els paràmetres de configuració de Apache i concretament pel que fa a KeepAlive hem de buscar una línea on apareixi la apraula KeepAlive i si esta a off el posem a on, quedant de la següent manera:

keepalive On

També hem de fixar número màxim de peticions que una connexió persistent atendrà, o el que és el mateix, configurar el paràmetre MaxKeepAliveRequests. El valor recomenat per a aquest paràmetre pot estar entre 50 i 75. Per últim ens queda configurar el temps que el servidor esperarà per noves peticions de clients connectats, o el que es el mateix, retocar el paràmetre KeepAliveTimeout. Això ens serveix per utilitzar la menor RAM possible mentre s’esperen peticions. Un valor entre 1 i 5 segons es força adequat.