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.

Selenium IDE: software per al testeig d’aplicacions web

Selenium és un Software de testeig d’aplicacions web. Des de la pàgina web de Selenium podem descarregar-lo en varis formats, però només farem referència a la versió Selenium IDE (Entorn de Desenvolupament Integral) per a tests Selenium. Selenium IDE està implementat com una extensió de Firefox. Per tal de construir els test de prova no cal que coneguem el llenguatge d’scripts de Selenium (Selenese) ja que Selenium IDE disposa d’un botó per enmagatzemar els clicks en links, obtenir les dades que es mostren per una pàgina,  que anem fent mentre ens passegem per la web sobre la que volem fer els tests. Aquests tests es poden exportar a llenguatges de programació com C#, Java, Perl, Groovy, Python, PHP i Ruby.

 

Per a saber com funciona no hi ha res millor que consultar la documentació que hi a la pàgina web de Selenium.

Com que m’ha costat una mica trobar el formatejador de PHP per a Selenium en deixo el link per a poder-lo descarregar aquí.

 

 

 

Neteja de les caches de DNS a Windows, Linux, Mac, Firefox i Google Chrome

La neteja de la memòria cau de DNS (com diuen els amics de softcatala) o neteja de les caches de DNS, de l’anglés flush DNS cache es un procediment que es sol realitzar per obtenir un refresc de la resolució de noms de DNS ja que tant sistemes operatius com navegadors fan cacheig de les DNS per fer la connexió més ràpida en futures visites tant a pàgines web com a servidors. Els ordinadors treballen amb adreces IP, mentre que els usuaris solen utilitzar noms de domini, que són més fàcils de recordar que no pas les adreces IP. Si fem una mirada a la nostra màquina veurem que fem servir un servidor de DNS que és el que tradueix els noms de domini en adreces IP.

Quan necessito realitzar una neteja de les caches de DNS?

Imaginem que tenim configurat un proveïdor de DNS com per exemple els servidros de DNS que ens faciliten els nostres proveïdors d’internet, però de sobte ens faciliten les adreces IP d’un servidor de DNS nou que ens aseguren que és molt més ràpid, com per exemple pot ser el servidor de DNS de Google.  Si es fa aquest canvi durant una sessió, estarem utilitzant les entrades antigues del DNS. També podem imaginar la situació que tenim un balancejador de càrrega (per a grans websites) que envia el trànsit a cada un dels servidors que tenim segons la càrrega que tinguin. Doncs bé pot passar que només volguem accedir a un d’ells, fixant la seva IP afegiunt una entrada al fitxer hosts, però com que la cache de DNS apunta a una entrada antiga, hem de netejar les caches de DNS.

Neteja de memòria cau de DNS en Sistemes Operatius

Windows

Per netejar la cache a windows s’ha d’obrir l’execució de comandes (tecles Windows + r), escriure cmd i executar. Ens sortirà una finestra com la següent:

Execució de comandes a  Windows


Un cop aquí hem d’escriure ipconfig /flushdns per netejar la memòria cau de les DNS a Windows. Si ens interessés veure les entrades que hi ha a la cahche de DNS de Windows podem executar la comanda ipconfig /displaydns. També ens pot interessar apagar el cacheig de DNS a windows i per tal d’aconsegiur-ho hem d’executar la comanda net stop dnscache, i per tornar-lo a engegar de nou amb la comanda net start dnscache.

Linux

Per netejar la cache de DNS en sistemes operatius Linux, s’ha de reiniciar el dimoni nscd. Per tal de reiniciar aquest dimoni, i amb permisos de superusuari executem la comanda /etc/rc.d/init.d/nscd restart desde el terminal de Linux.

MAC

Per netejar la memòria cau de DNS en els sistemes operatius MAC és igual de sencill que en sistemes operatius Linux, executant la comanda lookupd -flushcache . En les versions noves de MAC, des de la versió 10.5 fins a l’actual s’ha d’utilitzar la comanda dscacheutil -flushcache.

 

Neteja de memòria cau de DNS a Firefox i Google Chrome

Firefox

Per a realitzar la neteja de la memòria cau a Firefox podem fer servir l’extensió DNS Flusher. Ens apareixerà a la barra inferior del Firefox la IP a la qual ens estem connectant. Per exemple aquesta es la IP que apareix quan ens connectem a Google:

Google Chrome

Per a Google Chrome no he trobat cap extensió tan útil com la que he comentat per a Firefox, però la mateixa tasca es pot realitzar escrivint el següent a la barra de navegació de Google Chrome  chrome://net-internals/#dns i fent click sobre el botó Clear host cache.