SlideShare una empresa de Scribd logo
1 de 27
Descargar para leer sin conexión
Herramientas para la medición del
      desempeño en PHP

       Carlos Nacianceno
Quién soy?
                      • PHP desde hace 12
                        años

                      • Zend Certified
                        Engineer
  Carlos Nacianceno
                      • Instructor de cursos
                        Zend

                      • El Taller Web
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.
¿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
Recursos
• Recursos para una aplicación web
  – Procesamiento
  – Memoria
  – Ancho de Banda


• Tradicionalmente
  – Limitados
  – Costosos
  – Lenta disposición
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
Benchmarking
• Medir comparativamente

• Punto de vista externo de nuestra aplicación
  – Peticiones HTTP
  – Web server
  –
• Comparaciones justas!!!
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.
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
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
Apache Benchmarking
Apache Benchmarking
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/
Siege
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
Siege
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
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
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
Zend Debugger
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
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
Xdebug
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();
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
Preguntas?
Gracias




                @igormx

               @eltallerweb
          http://eltallerweb.com

Más contenido relacionado

Similar a Herramientas para la medicion de desempeño PHPConMX 2012

Webinario mejorando el desempeño con zend server
Webinario   mejorando el desempeño con zend serverWebinario   mejorando el desempeño con zend server
Webinario mejorando el desempeño con zend serverEl Taller Web
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas.. ..
 
Probando aplicaciones AngularJS
Probando aplicaciones AngularJSProbando aplicaciones AngularJS
Probando aplicaciones AngularJSRodrigo Pimentel
 
Dev ops with Data
Dev ops with DataDev ops with Data
Dev ops with Datannakasone
 
Mantenimiento y mejora continua de la performance de las aplicaciones
Mantenimiento y mejora continua de la performance de las aplicacionesMantenimiento y mejora continua de la performance de las aplicaciones
Mantenimiento y mejora continua de la performance de las aplicacionesAbstracta
 
Demostración: ¿Cómo acelera la plataforma Denodo su tiempo para obtener infor...
Demostración: ¿Cómo acelera la plataforma Denodo su tiempo para obtener infor...Demostración: ¿Cómo acelera la plataforma Denodo su tiempo para obtener infor...
Demostración: ¿Cómo acelera la plataforma Denodo su tiempo para obtener infor...Denodo
 
Juan Garrido - Corporate Forensics: Saca partido a tu arquitectura[RootedCON ...
Juan Garrido - Corporate Forensics: Saca partido a tu arquitectura[RootedCON ...Juan Garrido - Corporate Forensics: Saca partido a tu arquitectura[RootedCON ...
Juan Garrido - Corporate Forensics: Saca partido a tu arquitectura[RootedCON ...RootedCON
 
Rendimiento y velocidad en WordPress
Rendimiento y velocidad en WordPress Rendimiento y velocidad en WordPress
Rendimiento y velocidad en WordPress Dani Reguera Bakhache
 
Jose Luis Soria - Visual Studio Tour Plain Concepts - DevOps
Jose Luis Soria - Visual Studio Tour Plain Concepts - DevOpsJose Luis Soria - Visual Studio Tour Plain Concepts - DevOps
Jose Luis Soria - Visual Studio Tour Plain Concepts - DevOpsJose Luis Soria
 
Adaptacion y mejora continua de la performance de las aplicaciones
Adaptacion y mejora continua de la performance de las aplicacionesAdaptacion y mejora continua de la performance de las aplicaciones
Adaptacion y mejora continua de la performance de las aplicacionesGeneXus
 
Clase 2 - Construccion de los SI.ppt
Clase 2 - Construccion de los SI.pptClase 2 - Construccion de los SI.ppt
Clase 2 - Construccion de los SI.pptrogergrefa1
 
Azure Realtime analytics: Análisis de datos en tiempo real
Azure Realtime analytics: Análisis de datos en tiempo realAzure Realtime analytics: Análisis de datos en tiempo real
Azure Realtime analytics: Análisis de datos en tiempo realSoftware Guru
 
SecondNug Febrero 2012 - Automatización de despliegues
SecondNug Febrero 2012 - Automatización de desplieguesSecondNug Febrero 2012 - Automatización de despliegues
SecondNug Febrero 2012 - Automatización de desplieguesJose Luis Soria
 

Similar a Herramientas para la medicion de desempeño PHPConMX 2012 (20)

Webinario mejorando el desempeño con zend server
Webinario   mejorando el desempeño con zend serverWebinario   mejorando el desempeño con zend server
Webinario mejorando el desempeño con zend server
 
Flujo de desarrollo para drupal (PFC)
Flujo de desarrollo para drupal (PFC)Flujo de desarrollo para drupal (PFC)
Flujo de desarrollo para drupal (PFC)
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas
 
Probando aplicaciones AngularJS
Probando aplicaciones AngularJSProbando aplicaciones AngularJS
Probando aplicaciones AngularJS
 
PresentacióN Tesis
PresentacióN TesisPresentacióN Tesis
PresentacióN Tesis
 
Clase 11
Clase 11Clase 11
Clase 11
 
Dev ops with Data
Dev ops with DataDev ops with Data
Dev ops with Data
 
Meetup Oracle Technology MAD_BCN: 6.2 DevOps y DataOps
Meetup Oracle Technology MAD_BCN: 6.2 DevOps y DataOpsMeetup Oracle Technology MAD_BCN: 6.2 DevOps y DataOps
Meetup Oracle Technology MAD_BCN: 6.2 DevOps y DataOps
 
Mantenimiento y mejora continua de la performance de las aplicaciones
Mantenimiento y mejora continua de la performance de las aplicacionesMantenimiento y mejora continua de la performance de las aplicaciones
Mantenimiento y mejora continua de la performance de las aplicaciones
 
DevOps+[Chef/Docker]
 DevOps+[Chef/Docker] DevOps+[Chef/Docker]
DevOps+[Chef/Docker]
 
Html5
Html5Html5
Html5
 
Demostración: ¿Cómo acelera la plataforma Denodo su tiempo para obtener infor...
Demostración: ¿Cómo acelera la plataforma Denodo su tiempo para obtener infor...Demostración: ¿Cómo acelera la plataforma Denodo su tiempo para obtener infor...
Demostración: ¿Cómo acelera la plataforma Denodo su tiempo para obtener infor...
 
Juan Garrido - Corporate Forensics: Saca partido a tu arquitectura[RootedCON ...
Juan Garrido - Corporate Forensics: Saca partido a tu arquitectura[RootedCON ...Juan Garrido - Corporate Forensics: Saca partido a tu arquitectura[RootedCON ...
Juan Garrido - Corporate Forensics: Saca partido a tu arquitectura[RootedCON ...
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Rendimiento y velocidad en WordPress
Rendimiento y velocidad en WordPress Rendimiento y velocidad en WordPress
Rendimiento y velocidad en WordPress
 
Jose Luis Soria - Visual Studio Tour Plain Concepts - DevOps
Jose Luis Soria - Visual Studio Tour Plain Concepts - DevOpsJose Luis Soria - Visual Studio Tour Plain Concepts - DevOps
Jose Luis Soria - Visual Studio Tour Plain Concepts - DevOps
 
Adaptacion y mejora continua de la performance de las aplicaciones
Adaptacion y mejora continua de la performance de las aplicacionesAdaptacion y mejora continua de la performance de las aplicaciones
Adaptacion y mejora continua de la performance de las aplicaciones
 
Clase 2 - Construccion de los SI.ppt
Clase 2 - Construccion de los SI.pptClase 2 - Construccion de los SI.ppt
Clase 2 - Construccion de los SI.ppt
 
Azure Realtime analytics: Análisis de datos en tiempo real
Azure Realtime analytics: Análisis de datos en tiempo realAzure Realtime analytics: Análisis de datos en tiempo real
Azure Realtime analytics: Análisis de datos en tiempo real
 
SecondNug Febrero 2012 - Automatización de despliegues
SecondNug Febrero 2012 - Automatización de desplieguesSecondNug Febrero 2012 - Automatización de despliegues
SecondNug Febrero 2012 - Automatización de despliegues
 

Último

Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 

Último (11)

Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 

Herramientas para la medicion de desempeño PHPConMX 2012

  • 1. Herramientas para la medición del desempeño en PHP Carlos Nacianceno
  • 2. Quién soy? • PHP desde hace 12 años • Zend Certified Engineer Carlos Nacianceno • Instructor de cursos Zend • El Taller Web
  • 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. ¿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. Recursos • Recursos para una aplicación web – Procesamiento – Memoria – Ancho de Banda • Tradicionalmente – Limitados – Costosos – Lenta disposición
  • 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. Benchmarking • Medir comparativamente • Punto de vista externo de nuestra aplicación – Peticiones HTTP – Web server – • Comparaciones justas!!!
  • 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. 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. 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
  • 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. Siege
  • 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. Siege
  • 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. 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. 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
  • 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. 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
  • 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. 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
  • 27. Gracias @igormx @eltallerweb http://eltallerweb.com