herramientas para la medicion de desempeño phpconmx 2012

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

Upload: carlos-nacianceno

Post on 28-Jun-2015

814 views

Category:

Technology


0 download

DESCRIPTION

Los slides de la charla en el PHPConMX

TRANSCRIPT

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