[LUG.ro] Optimizando web/SQL server

blitux dev.pabloquiroga en gmail.com
Lun Abr 25 10:53:51 ART 2011


El día 22 de abril de 2011 15:01, Luis Diaz <diazluis en gmail.com> escribió:
> Hola, gracias por la respuesta, actualmente estoy mandando el
> contenido estatico sin mas vueltas que un "expires: max" el resto pasa
> por php-fpm, y apc no funciona porque hace lios por un bug[1]
> los otros no los he probado aun, uso gzip, le di una mirada a varnish
> pero me causaba problemas, probe cloud-flare para el contenido
> estatico, pero no ganaba mucho ya que sus servers estan afuera del
> pais, de todas formas el contenido estatico sale de otro domiño (sin
> cookies)
> optimizaciones a nivel app no hice muchas ya que es una aplicacion que
> no hice y tanto no se.

Dale una mirada al .htaccess de http://html5boilerplate.com, que está
bastante bien armado. Una mejora a la performance de apache consiste
en colocar las directivas del .htaccess en donde definis el
virtualhost. De esa forma evitas el overhead de tener que levantar el
.htaccess en cada request.

> estoy por probar apache con pagespeed, la carga en el servidor no es
> una molestia por ahora! :D

Un servidor que probé con muy buenos resultados para contenido
estático es Cherokee [http://www.cherokee-project.com/].
Lamentablemente no pude configurarlo bien en un hardy para producción
porque habían paquetes viejos (algunos bugs...) y en ese entonces no
estaba tan estable. Pero vale la pena probarlo, es (segun dicen)
superior a lighttpd y nginx para contenido estático. Lo haces correr
en otro puerto, digamos 8080, y usas un proxy para levantar el
contenido, o podes hacerlo correr para otro dominio (asi evitas las
cookies, por ejemplo)

> mysql no parece tener problemas, pero lo fui tunenando con tunning-primer
>
> tenes alguna opinion de eaccelerator o xcache?

No he probado xcache, y eacelerator lo probé hace mucho en mi maquina
de desarrollo y hubo mejoras, pero no seguí un proceso de
benchmarking. Actualmente tengo un par de sitios con los que puedo
probar para ver la diferencia, aunque estan con apc en php 5.3 y no he
tenido problemas todavía.

> La verdad ya no se que mas tocar, teniendo en cuenta la carga del
> servidor (infima) con 400 usuarios online creo que solo puedo aspirar
> a reducir el tiempo que tarda la pagina en generarse y tocar algun
> parametro de red

Estaría bueno levantar alguna wiki con este tipo de info para ir
estableciendo algunos procedimientos o tecnicas para optimizar servers
y aplicaciones web. No llevo notas de todo esto, solo recuerdo qué
usaba y despues googleo y veo que encuentro. No conocía, por ejemplo,
tuning-primer.

> [1]http://pecl.php.net/bugs/bug.php?id=16814
>
> 2011/4/21 blitux <dev.pabloquiroga en gmail.com>:
>> 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