Profiling en Drupal

drupal_profiling.png
Solucionex
03
Ago 17

En esta entrada vamos a ver algunos pasos/herramientas que podemos utilizar para hacer profiling en Drupal.

Por todos es sabido que Drupal nos ofrece una versatilidad muy grande en el diseño de páginas web desde un panel administrativo, siempre hasta cierto punto. Sin embargo esa facilidad que nos ofrece por un lado lo complica por otro como puede ser las decenas o cientos de tablas que se crean.

En algún momento de nuestros años con Drupal nos puede llegar un proyecto que tarda excesivamente en renderizar una página y o no sabemos por dónde atacarlo para descubrir dónde está el problema, o directamente no tenemos pista alguna para seguir el hilo.

El problema puede venir de base de datos, de alguna función mal diseñada, etc. Podemos hacer una traza exhaustiva utilizando por ejemplo Xdebug, o podemos ayudarnos de ciertas herramientas.

Si tenemos sospechas que puede ser la base de datos, podemos utilizar el conocido módulo Devel que tiene una sección en su configuración (/admin/config/development/devel) para mostrar todas las queries que se ejecutan ordenadas y que resalte aquellas que duren más de un determinado tiempo:

Devel configuration queries

 

Una vez lo tenemos configurado como queremos, tan sólo tenemos que ir a una de las páginas que vayan especialmente lentas y hacer scroll al final hasta ver las queries:

 

Devel queries

 

Puede ser que el problema no esté en la base de datos, quizá sea alguna función custom, de algún módulo contribuido o incluso nativa de Drupal. Devel tiene otra sección en su configuración llamada XHProf. XHProf es un perfilador de PHP que nos ayuda a encontrar este tipo de problemas.

Sin embargo puede antojarse un poco complicado configurar XHProf en Drupal por lo que vamos a recurrir a un módulo Drupal con su mismo nombre, XHProf y nos vamos a su configuración (/admin/config/development/xhprof):

xhprof configuration

 

Una vez más cargamos una de las páginas conflictivas, hacemos scross abajo y justo antes de las queries que vimos antes, tenemos un enlace:

xhprof enlace

Si hacemos clic en el enlace podremos ver un completo análisis de tiempo, memoria, cpu de todas y cada unas de las funciones por las que ha pasado, y podremos encontrar alguna anomalía si la hubiera de vistazo. Las columnas son ordenables:

xhprof log

 

Como siempre, espero que os haya resultado de interés y os acordéis de este tipo de herramientas cuando tengáis que analizar vuestra web.

Saludos!