Cómo medir el rendimiento de nuestro drupal con PHPstorm y xdebug
12/06/2019 by alvar0hurtad0

Front.id

En este artículo explico la configuración que yo utilizo, aunque hay muchas más opciones.

En primer lugar, debemos entender cómo funciona esta manera de medir el rendimiento:

  • En cada petición que hacemos al servidor, se genera un fichero con todas las llamadas a funciones y métodos, así como la memoria y el tiempo que necesita cada una de ellas.
  • Ese fichero lo podemos analizar con diversas herramientas, en este caso utilizaremos una que viene con PHPstorm, pero hay muchas.

Generando los ficheros 

Hay dos maneras de hacer esto: dejar el servidor preparado para que siempre escriba los ficheros de profiling o utilizar una cookie o un parámetro get o post para activarlo o desactivarlo.

Si queremos que siempre nos genere los ficheros, tenemos que asegurarnos de que nuestro fichero de configuración de php tiene estas líneas para activar el profiler:

xdebug.profiler_enable = 1;

Si quisiéramos poder activar o desactivar el profiler con una cookie con el valor XDEBUG_PROFILE tendríamos que poner esto:

xdebug.profiler_enable = 0;

xdebug.profiler_enable_trigger = 1;

Como todo, cada uno tendrá sus preferencias. Lo que si te aconsejo es que si quieres dejarlo activado y despreocuparte de la cookie, tengas un mecanismo para borrar los ficheros que generas o comentes y descomentes la línea que activa el profiler cuando lo necesites. Dudo mucho que te interese generar y guardar la información de TODAS las ejecuciones que hagas en tu local.

Otra información que puedes meter es la que indica dónde hay que guardar toda la información.

xdebug.profiler_output_dir = /tmp/xdebug/profiler

xdebug.profiler_output_name = cachegrind.out.%p
 

Estos dos parámetros tienen valores por defecto así que a lo mejor no los queremos personalizar. Por defecto nos va a poner todos los ficheros en /tmp

Mírate al final la sección de problemas comunes a propósito de esto. Ahí te cuento un problema que he tenido yo, y como soy una persona común, pues supongo que es un problema común.

Analizando con PHPstorm

Vamos a ver cómo se analizan los datos con PHPstorm, hay más maneras pero aquí voy a contar cómo analizarlo con PHPstorm porque es lo que yo uso y de lo que puedo hablar.

En realidad solo hay que buscar la herramienta que ya tiene PHPstorm para esto.

select profiler

Hay que saber donde estamos metiendo los ficheros, pero por lo demás es sencillo.

Una vez seleccionamos el fichero a estudiar, tenemos información relevante sobre cómo está funcionando nuestra aplicación.

PHPstorm profiling tool

 

Errores comunes

Configurando esto, es posible que no encuentres los ficheros de profiling en /tmp tal y como los has configurado. Eso puede pasar (a mi me ha pasado) porque nuestro proceso utiliza PrivateTmp. Y para resumir lo que pasa, es que se crea un directorio dentro de temporales con un hash y se meten ahí todos los temporales, de manera que tendríamos que currarnos un poco la búsqueda.

Yo lo que he hecho es indicar que me ponga los ficheros dentro de /var/log/xdebug y he metido un comando para que limpie todos los ficheros al arrancar en el /etc/rc.local

 

Add new comment

The content of this field is kept private and will not be shown publicly.

Restricted HTML

  • Allowed HTML tags: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Lines and paragraphs break automatically.
  • Web page addresses and email addresses turn into links automatically.