Herramientas para la medición del      desempeño en PHP       Carlos Nacianceno
Quién soy?                      • PHP desde hace 12                        años                      • Zend Certified     ...
Introducción• Cuando se desarrolla, pocas veces se toma  en cuenta los recursos utilizados por las  aplicaciones• Se ignor...
¿Qué es el desempeño?• La cantidad de trabajo o procesos que se  ejecuta en comparación con los recursos  disponibles.  – ...
Recursos• Recursos para una aplicación web  – Procesamiento  – Memoria  – Ancho de Banda• Tradicionalmente  – Limitados  –...
Desempeño• Generalmente el buen desempeño puede  reconocerse por:  –   Baja utilización de los recursos  –   Corto tiempo ...
Benchmarking• Medir comparativamente• Punto de vista externo de nuestra aplicación  – Peticiones HTTP  – Web server  –• Co...
Benchmarking• Medir  – Si determinada URL tiene problemas  – Un cambio en el código  – Cambio en X, o Y• Obtendremos infor...
Apache Benchmarking• Saber cómo se esta desempeñando el Web  server  – Y la aplicación que esta sirviendo• Herramienta CLI...
Apache Benchmarking• Ejecución• Donde  – -n es el número de peticiones que ab realizará en    esta sesión  – -c es el núme...
Apache Benchmarking
Apache Benchmarking
Siege• Load Testing y Benchmarking HTTP• Permite probar aplicaciones bajo carga  simulada• Número de usuarios simulados co...
Siege
Siege• Parte de los resultados que nos entrega son:   – Transacciones totales   – Tiempo total del test   – Tiempo promedi...
Siege
Perfilado• Recolección de información sobre la  aplicación durante su ejecución para un  análisis.• Identifica cuellos de ...
Zend Debugger• Extensión PHP• Freeware instalable a stack PHP prexistente• Controla la ejecución y obtiene información• In...
Zend Debugger• Cliente (IDE) hace una petición al Servidor  1. Zend Debugger se activa y controla la ejecución  2. Captura...
Zend Debugger
Xdebug• Extensión PHP• Open Source  – PECL• Registra lo ocurrido en la ejecución y genera  esos registros para su análisis...
Xdebug• Se activa el perfilador de Xdebug  1. xdebug.profiler_enable a 1     •    xdebug.profiler_enable_trigger  2. xdebu...
Xdebug
Xhprof• Extensión PHP• Facebook (PECL)• Más ligero que Xdebug  – Compatible con KcheGrind y similares• Modificar cada arch...
Optimización prematura• Optimizar el código antes de saber donde  están los cuellos de botella.• Hacer cambios para intent...
Preguntas?
Gracias                @igormx               @eltallerweb          http://eltallerweb.com
Upcoming SlideShare
Loading in …5
×

Herramientas para la medicion de desempeño PHPConMX 2012

1,053 views
905 views

Published on

Los slides de la charla en el PHPConMX

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,053
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
12
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Herramientas para la medicion de desempeño PHPConMX 2012

  1. 1. Herramientas para la medición del desempeño en PHP Carlos Nacianceno
  2. 2. Quién soy? • PHP desde hace 12 años • Zend Certified Engineer Carlos Nacianceno • Instructor de cursos Zend • El Taller Web
  3. 3. 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.
  4. 4. ¿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
  5. 5. Recursos• Recursos para una aplicación web – Procesamiento – Memoria – Ancho de Banda• Tradicionalmente – Limitados – Costosos – Lenta disposición
  6. 6. 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
  7. 7. Benchmarking• Medir comparativamente• Punto de vista externo de nuestra aplicación – Peticiones HTTP – Web server –• Comparaciones justas!!!
  8. 8. 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.
  9. 9. 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
  10. 10. 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
  11. 11. Apache Benchmarking
  12. 12. Apache Benchmarking
  13. 13. 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/
  14. 14. Siege
  15. 15. 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
  16. 16. Siege
  17. 17. 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
  18. 18. 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
  19. 19. 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
  20. 20. Zend Debugger
  21. 21. 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
  22. 22. 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
  23. 23. Xdebug
  24. 24. 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();
  25. 25. 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
  26. 26. Preguntas?
  27. 27. Gracias @igormx @eltallerweb http://eltallerweb.com

×