A free and open-source book on ZF3 for beginners

Translation into this language is not yet finished. You can help this project by translating the chapters and contributing your changes.

Análisis de Rendimiento

Cuando nuestro sitio ya esta listo y trabajando, generalmente comenzamos a interesarnos en la forma de hacerlo tan rápido como sea posible. XDebug permite analizar el rendimiento, «profile», de nuestro sitio. El análisis de rendimiento permite determinar cuales métodos de un clase (o funciones) se ejecutan por más tiempo. Esto permite determinar los «cuellos de botella» en nuestro código e identificar los problemas de rendimiento.

Por cada petición HTTP la extensión XDebug mide la cantidad de tiempo que una función toma en su ejecución y escribe esta información en una archivo. Generalmente, los archivos de análisis de rendimiento se almacenan dentro de la carpeta temporal del sistema (la carpeta \tmp en GNU/Linux) y tienen nombres como xdebug.out.<timestamp>, donde <timestamp> es la marca de tiempo de la petición HTTP. Todo lo que tenemos que hacer es abrir el archivo y analizarlo.

Para habilitar el analizador de XDebug, debemos cambiar el siguiente parámetro de configuración en el archivo xdebug.ini:

xdebug.profiler_enable = 1

Desafortunadamente, NetBeans para PHP no incluye una herramienta para ver los resultados del análisis. Por esta razón debemos instalar una herramienta de visualización. Abajo, daremos instrucciones de como instalar una herramienta web simple llamada Webgrind. Webgrind puede trabajar sobre cualquier plataforma, la propia herramienta está escrita con PHP.

La instalación de Webgrind es sencillo.

Primero, necesitamos descargar webgrind de la página del proyecto y desempaquetarlo en alguna carpeta. En GNU/Linux, podemos hacer esto con los siguientes comandos:

$ cd ~

$ wget https://github.com/jokkedk/webgrind/archive/master.zip

$ unzip master.zip

El primer comando de arriba cambiará la carpeta de trabajo actual a nuestra carpeta home, luego descargaremos el archivo Webgrind desde internet y finalmente desempaquetamos el archivo.

Luego, necesitamos decirle al servidor web Apache donde encontrar los archivos de Webgrind. Esto significa que necesitamos configurar un sitio virtual. Ya hemos mostrado qué es un sitio virtual en el Apéndice A. Configuración del Entorno de Desarrollo Web. No olvidemos reiniciar el servidor web Apache después de tener configurado el sitio virtual.

Finalmente, abrimos Webgrind en nuestro navegador web colocando la URL de la instalación de Webgrind. Por ejemplo, si configuramos el sitio virtual para escuchar en el puerto 8080, escribimos en la barra de navegación del navegador web «http://localhost:8080» y presionamos Enter. La página web de Webgrind aparecerá (ver figura B.13):

Figura B.13. Página Webgrind Figura B.13. Página Webgrind

En la cabecera de la página de Webgrind podemos seleccionar el porcentaje de las funciones llamadas en razón de su peso (figura B.14). Por defecto está configurado en 90%. Si configuramos un porcentaje bajo se ocultarán las funciones que son llamadas pocas veces.

Figure B.14. Selección del Porcentaje Webgrind Figure B.14. Selección del Porcentaje Webgrind

La lista desplegable que está a la derecha del campo de porcentaje nos permite seleccionar el archivo de datos que se someterá a análisis. Por defecto, se coloca «Auto (newest)» que obliga a Webgrind a usar el archivo con la marca de tiempo más reciente. Podríamos necesitar seleccionar otra archivo, por ejemplo, en el caso de que nuestra página web usara peticiones AJAX asíncronas.

La lista desplegable que está mas a la derecha permite asignar la unidad de medida que se usará para medir los datos. Las opciones posibles son: porcentaje (por defecto), mili-segundos y micro-segundos.

Si seleccionamos el porcentaje, el nombre del archivo, la unidad de medida y hacemos clic en el botón Update veremos la visualización de los datos hecha por Webgrind (el cálculo puede tardar algunos segundos). Cuando termine el cálculo seremos capaces de ver una tabla con la lista de las llamadas a funciones ordenadas de manera descendente o por el «peso» de la función. Las funciones más pesadas serán mostradas en la parte superior.

La tabla tiene las siguientes columnas:

Haciendo clic en el encabezado de una columna podemos ordenar los datos de manera ascendente o descendente.

Podemos hacer clic en el triangulo que está al lado del nombre de la función para expandir la lista de invocaciones a la función. Esta lista permite ver quien llamo a esta función y que cantidad de tiempo consumió, la lista tiene las siguientes columnas:

La barra coloreada en la parte superior de la página muestra la proporción de los diferentes tipos de función:

Observemos que el análisis crea un nuevo archivo de datos en la carpeta /tmp para cada petición HTTP a nuestro sitio web. Esto puede causar el agotamiento del espacio en disco. Por esta razón, cuando hemos terminado de generar el análisis de rendimiento de la aplicación es recomendable desactivarlo editando el archivo php.ini comentando el parámetro xdebug.profiler_enable de la siguiente manera y luego reiniciar el servidor web Apache.

;xdebug.profiler_enable = 0


Top