Herramientas para la medicion de desempeño PHPConMX 2012

27
Herramientas para la medición del desempeño en PHP Carlos Nacianceno

description

Los slides de la charla en el PHPConMX

Transcript of Herramientas para la medicion de desempeño PHPConMX 2012

Page 1: Herramientas para la medicion de desempeño  PHPConMX 2012

Herramientas para la medición del desempeño en PHP

Carlos Nacianceno

Page 2: Herramientas para la medicion de desempeño  PHPConMX 2012

Quién soy?

• PHP desde hace 12 años

• Zend Certified Engineer

• Instructor de cursos Zend

• El Taller Web

Carlos Nacianceno

Page 3: Herramientas para la medicion de desempeño  PHPConMX 2012

Introducción

• Cuando se desarrolla, pocas veces se toma en cuenta los recursos utilizados por las aplicaciones

• Se ignora si un script consume muchos recursos y más concretamente en que procesos.

• No hay conocimiento de herramientas que nos ayuden a determinar tales cosas.

Page 4: Herramientas para la medicion de desempeño  PHPConMX 2012

¿Qué es el desempeño?

• La cantidad de trabajo o procesos que se ejecuta en comparación con los recursos disponibles.

– Que tanto hacemos con lo que tenemos

• Alto/Bajo desempeño

– Aprovechamiento de los recursos, no al tamaño

Page 5: Herramientas para la medicion de desempeño  PHPConMX 2012

Recursos

• Recursos para una aplicación web

– Procesamiento

– Memoria

– Ancho de Banda

• Tradicionalmente

– Limitados

– Costosos

– Lenta disposición

Page 6: Herramientas para la medicion de desempeño  PHPConMX 2012

Desempeño

• Generalmente el buen desempeño puede reconocerse por:– Baja utilización de los recursos

– Corto tiempo de respuesta

– Transmisión de datos eficiente

– Alta disponibilidad

Para el usuario es la rapidez con la que ve los datos

Page 7: Herramientas para la medicion de desempeño  PHPConMX 2012

Benchmarking

• Medir comparativamente

• Punto de vista externo de nuestra aplicación

– Peticiones HTTP

– Web server

• Comparaciones justas!!!

Page 8: Herramientas para la medicion de desempeño  PHPConMX 2012

Benchmarking

• Medir

– Si determinada URL tiene problemas

– Un cambio en el código

– Cambio en X, o Y

• Obtendremos información concreta con medidas de como se ve desde afuera nuestro sitio o aplicación.

Page 9: Herramientas para la medicion de desempeño  PHPConMX 2012

Apache Benchmarking

• Saber cómo se esta desempeñando el Web server

– Y la aplicación que esta sirviendo

• Herramienta CLI

• Incluida con cualquier instalación de Apache

Page 10: Herramientas para la medicion de desempeño  PHPConMX 2012

Apache Benchmarking

• Ejecución

• Donde

– -n es el número de peticiones que ab realizará en esta sesión

– -c es el número de peticiones concurrentes

Page 11: Herramientas para la medicion de desempeño  PHPConMX 2012

Apache Benchmarking

Page 12: Herramientas para la medicion de desempeño  PHPConMX 2012

Apache Benchmarking

Page 13: Herramientas para la medicion de desempeño  PHPConMX 2012

Siege

• Load Testing y Benchmarking HTTP

• Permite probar aplicaciones bajo carga simulada

• Número de usuarios simulados configurable

• Incluido en algunas distro Linux

– http://www.joedog.org/pub/siege/

Page 14: Herramientas para la medicion de desempeño  PHPConMX 2012

Siege

Page 15: Herramientas para la medicion de desempeño  PHPConMX 2012

Siege

• Parte de los resultados que nos entrega son:

– Transacciones totales

– Tiempo total del test

– Tiempo promedio de respuesta para cada usuario

– Concurrencia

– Transacciones exitosas

Page 16: Herramientas para la medicion de desempeño  PHPConMX 2012

Siege

Page 17: Herramientas para la medicion de desempeño  PHPConMX 2012

Perfilado

• Recolección de información sobre la aplicación durante su ejecución para un análisis.

• Identifica cuellos de botella

• Determinar en que punto de la ejecución:

– Se uso más memoria

– Tomó más tiempo en ejecutar

Page 18: Herramientas para la medicion de desempeño  PHPConMX 2012

Zend Debugger

• Extensión PHP

• Freeware instalable a stack PHP prexistente

• Controla la ejecución y obtiene información

• Informes detallados de el desempeño de la ejecución

• Perfilado bajo demanda– Local– Remoto

Page 19: Herramientas para la medicion de desempeño  PHPConMX 2012

Zend Debugger

• Cliente (IDE) hace una petición al Servidor

1. Zend Debugger se activa y controla la ejecución

2. Captura la información detallada de la misma

3. Regresa los resultados al cliente

• Gráfica

• Estadísticas de ejecución

• Flujo de ejecución

• Cobertura de código

Page 20: Herramientas para la medicion de desempeño  PHPConMX 2012

Zend Debugger

Page 21: Herramientas para la medicion de desempeño  PHPConMX 2012

Xdebug

• Extensión PHP

• Open Source

– PECL

• Registra lo ocurrido en la ejecución y genera esos registros para su análisis

• Perfilado encendido o apagado

Page 22: Herramientas para la medicion de desempeño  PHPConMX 2012

Xdebug

• Se activa el perfilador de Xdebug

1. xdebug.profiler_enable a 1

• xdebug.profiler_enable_trigger

2. xdebug.profiler_output_dir

3. Captura información de la ejecución

4. Guarda resultados

• Gráfica ( KcheGrind, WinGrind, WebGrind )

• Estadísticas de ejecución

• Flujo de ejecución

• Cobertura de código

Page 23: Herramientas para la medicion de desempeño  PHPConMX 2012

Xdebug

Page 24: Herramientas para la medicion de desempeño  PHPConMX 2012

Xhprof

• Extensión PHP

• Facebook (PECL)

• Más ligero que Xdebug – Compatible con KcheGrind y similares

• Modificar cada archivo PHP– xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);

– $xhprof_data = xhprof_disable();

Page 25: Herramientas para la medicion de desempeño  PHPConMX 2012

Optimización prematura

• Optimizar el código antes de saber donde están los cuellos de botella.

• Hacer cambios para intentar que la aplicación “sea más rápida”

– Estos cambios resultan costosos en tiempo

– “Tunear” el web server o sistema operativo sin “tunear” primero la aplicación

– Simplemente escalar la plataforma con más recursos

Page 26: Herramientas para la medicion de desempeño  PHPConMX 2012

Preguntas?

Page 27: Herramientas para la medicion de desempeño  PHPConMX 2012

Gracias

@igormx

@eltallerweb

http://eltallerweb.com