Pasar al contenido principal
Penyaskito Blog

Main navigation

  • Home
  • Contacto
Language switcher
  • English
  • Español
User account menu
  • Iniciar sesión

Sobrescribir enlaces de ayuda a la navegación

  1. Inicio

Analizando el rendimiento de Drupal, WordPress o cualquier aplicación php con DDEV, XHProf y XHGui

Por penyaskito, 2 Mayo, 2021
Captura de pantalla de XHGui, mostrando información de una petición a WordPress

He llegado a los contenedores en Docker muy tarde. Probablemente debido a que mi trabajo en los últimos años no dependía de versiones de PHP, siempre usaba la última disponible, y siempre usé MySQL/MariaDB como motor de base de datos. Para un servidor que gestionaba usé LXC para tener aplicaciones en contenedores, y me funcionó bien, pero nunca tuve que tocarlo a menudo, y mi amigo Andrés me ayudó la mayoría de las veces. Docker me parecía confuso y, sujétame el cubata, pensé que era una moda, así que no quise aprenderlo. Así soy yo, todo un visionario, saludo en la escalera siempre y soy amigo de mis amigues.

Con alguna dificultad, pero llegué a comprenderlo, y desde entonces he adoptado y me apasionaron herramientas como docker-compose. Y cuando tuve que trabajar en un proyecto con Drupal usando Postgres, mi mejor amigo fue DDEV, abstrayendo las complejidades de docker-compose pero manteniendo la libertad para personalizar el entorno a tus necesidades. Así que es mi elección como plataforma de desarrollo la mayoría de las veces. Y por fortuna, es software libre.

El contrato implícito no-forzado del software libre es que tienes que contribuir si tienes la oportunidad de mejorarlo*. En contribuciones menores que hice la comunidad de DDEV fue acogedora y entusiasta, gracias Randy! Así que últimamente necesitaba buscar cuellos de botella de rendimiento en una web, y he estado trabajando en integrar XHProf con XHGui en DDEV. He contribuido la receta, así que tú también puedes usarlo en menos de 5 minutos! Puedes verlo aquí (en inglés): XHGui integration in DDEV documentation. Si crees que es necesario traducirlo, déjame un comentario.

* Aclaración: no digo que tengas que contribuir, no todes tenemos el mismo privilegio que yo. Pero *si ya lo hiciste, intenta contribuirlo*. 

Si habilitas XHProf, ya proporcionado por DDEV, monitoriza tu aplicación, pero necesitas capturar esa información y enviarla a algún sistema que te haga sencillo explorarla y entenderla. Ahí interviene perftools/php-profiler. Tiene la capacidad de gestionar que datos necesitamos en el análisis, y enviarlos a XHGui. XHGui corre en un contenedor independiente, recibe los datos, los almacena en una base de datos mongodb en otro contenedor, y los renderiza en tú navegador, dónde podrás verlos en diferentes listados, grafos y gráficos que te permitirán entender mejor que está pasando en tu aplicación. Puedes también comparar distintas peticiones a una misma página y ver cómo evoluciona el rendimiento con el paso del tiempo. El análisis e interpretación de esos datos es un tema complejo en sí, así que no entraré en más profundidad en este artículo.

Así que las buenas noticias son que puedes integrar esto ahora en cualquier proyecto que uses con DDEV, en menos de 5 minutos. La documentación es específica para Drupal 8+ (que usa composer) y WordPress (que no usa composer, aunque puedes hacerlo gracias a roots/bedrock), por lo que cubre ejemplos para diversos tipos de aplicaciones PHP. ¡Espero que sirva!

Como bonus, también he escrito un comando para (des)activar xhprof en DDEV sin tener que reiniciar el proyecto, escribir un comando de quince líneas, o hacer ssh al contenedor. Está en la misma página de DDEV-contrib, pero probablemente sea aceptado en DDEV pronto.

¡Gracias a Randy "rfay" Fay, Andrey "andypost" Postnikov y Mateu "e0ipso" Aguiló por consejos, ayuda e inspiración para completar esto! 

Tags

  • php
  • XHProf
  • DDEV
  • XHGui
  • WordPress
  • Drupal
  • Drupal planet

Comments

El contenido de este campo se mantiene privado y no se mostrará públicamente.
Acerca de formatos de texto

Texto sin formato

  • No se permiten etiquetas HTML.
  • Las direcciones de correos electrónicos y páginas web se convierten en enlaces automáticamente.
  • Saltos automáticos de líneas y de párrafos.

Archivo mensual

  • Enero 2022 (1)
  • Mayo 2021 (2)
  • Abril 2021 (1)
  • Noviembre 2012 (1)
  • Septiembre 2012 (3)
  • Agosto 2012 (3)
  • Junio 2012 (6)

Contenido reciente

Reescribiendo el historial de commits de git para editar el autor y el email de commits pasados
1 año 4 meses ago
Drupal JavaScript behavior para destacar líneas de pedido editadas en el carrito de Drupal Commerce
2 años ago
Analizando el rendimiento de Drupal, WordPress o cualquier aplicación php con DDEV, XHProf y XHGui
2 años ago
Actualización sencilla de un blog personal de Drupal 7 a 9: algunos consejos para migrar
2 años 1 mes ago
Drupalcamp Spain 2012
10 años 6 meses ago
Cumplimiento de la LOPD con el módulo LOPD de Drupal
10 años 7 meses ago
Pruebas de carga e informes desatendidos con JMeter
10 años 8 meses ago
Flujo de trabajo con Git y submodules para despliegues de Drupal
10 años 8 meses ago
Participando en Drupalcon Munich D8MI Sprint (en remoto)
10 años 9 meses ago
Charla en Drupal Sevilla: Contribuyendo a Drupal
10 años 9 meses ago

Comentarios recientes

Thanks for the comment
2 años ago
Thanks for sharing this…
2 años ago
Looking good!
2 años 1 mes ago
lopd
9 años 1 mes ago
LOPD
9 años 2 meses ago
Gridinit
10 años 7 meses ago
Ya la tiene
10 años 7 meses ago
Debería :-P
10 años 7 meses ago
Ei! tiene buena pinta...
10 años 7 meses ago
Buenas Fco Antonio,
10 años 8 meses ago

Blogs que sigo

Mateu Aguiló "e0ipso"
Gábor Hojtsy
Pedro Cambra
The Russian Lullaby, davidjguru
Can It Be All So Simple
Maria Arias de Reyna "Délawen"
Matt Glaman
Josef Ottosson (dotnet)
Daniel Wehner
Jacob Rockowitz
Syndicate

Footer

  • Contacto
  • Drupal.org
  • LinkedIn
  • GitHub
  • Twitter
Funciona con Drupal