[LUG.ro] Optimizando web/SQL server

blitux dev.pabloquiroga en gmail.com
Jue Abr 21 10:49:58 ART 2011


El 20 de abril de 2011 21:22, Luis Diaz <diazluis en gmail.com> escribió:
>
> Hola Muchachos, escribo para chusmear que optimizaciones hacen en sus
> servidores web/SQL para mejorar el rendimiento, actualmente no tengo
> problemas, pero siempre me gusta exprimir al maximo el hard
>
> Actualmente sali de apache/mod_php y pase a nginx con php-fpm que anda
> muy muy lindo, mis usuarios dicen que el sitio responde mejor que
> antes, pero desafortunadamente no es una comparacion valida ya que
> tambien cambie el hardware
>
> Vi que los de google toquetean parametros de red, pero no se que tan
> buena sea la idea
>
> Ustedes usan algunos trucos u opciones "no estandar" que ayude con el
> rendimiento?

Hola Luis,

Hay varios frentes para optimizar una aplicación web.

Del lado del cliente: usar gzip en archivos de texto (css, js, html),
minificar y combinar css y js para reducir la cantidad de requests
https, utilizar sprites para reducir la cantidad de imagenes cargadas
por el browser, cargar archivos javascript en forma asincrónica para
evitar el bloqueo del renderizado y mejorar la velocidad percibida del
sitio, habilitar cache y expires para el contenido estático, no setear
cookies para contenido estatico, etc. Todas estas cosas podes
lograrlas usando la extensión Page Speed de google para Firefox, y
cada técnica tiene su laburito.

Del lado del server/aplicacion: no conozco mucho en cuanto a la
optimización de redes y en general de apache y mysql, pero las
técnicas que suelen usarse tienen que ver con la optimización de la
aplicación en si, mas que de los parametros del servidor. Por ejemplo,
hay consultas SQL que se pueden reescribir para que sea posible
cachearlas. Ajustar los parametros del server MySQL como tamaño de
cache, log slow queries, uso de memoria, etc. pueden mejorar el
rendimiento de la aplicación.

PHP puede ser optimizado mediante caches de opcode, como APC,
eaccelerator y xcache (no todas juntas) y ajustando los parámetros de
cada una dependiendo de la aplicación. Memcached puede ser utilizado
para cachear los resultados de operaciones intensivas y mejorar aún
mas el tiempo de respuesta.

Si tenes mucho contenido estático (texto, documentos o información que
no se modifique regularmente) podes utilizar Varnish [1] como caché.
Vuela.

Si la aplicación tiene muchos requests concurrentes, por ahi conviene
utilizar varios servers con balanceo de carga.

En fin, hay muchas técnicas para mejorar el rendimiento de una
aplicación, pero la mayoría tiene que ver con cache. Para probar el
rendimiento podrías usar siege o ab (incluido con apache, creo) que
básicamente te permite hacer requests concurrentes y tirar un promedio
de requests/seg. De esa forma podes ver si aumenta el rendimiento y
cuánto. Estas son las técnicas que he juntado con el tiempo y trato de
aplicarlas a todas mientras el hosting y la aplicación me lo permiten.

[1] http://www.varnish-cache.org/

--
Pablo Daniel Quiroga Figueroa | @blitux en twitter
Drupal Fan & Freelance Web Developer
Movil: (261) 4858 254


Más información sobre la lista de distribución Lugro