WebProfiler

Perfilador de desarrollo de Drupal que extrae, recopila, almacena y muestra información detallada de perfilado para cada solicitud.

webprofiler
804 sites
56
drupal.org

Install

Drupal 11 v11.1.1
composer require 'drupal/webprofiler:^11.1'
Drupal 10 v10.3.1
composer require 'drupal/webprofiler:^10.3'

Overview

WebProfiler es una herramienta integral de perfilado de desarrollo para Drupal 11 que proporciona información profunda sobre cada solicitud procesada por tu aplicación Drupal. Recopila datos detallados de perfilado incluyendo consultas de base de datos, operaciones de caché, uso de memoria, solicitudes HTTP, procesamiento de formularios, renderizado de Views y más.

El módulo crea un archivo de perfil para cada solicitud que contiene toda la información recopilada, que luego se muestra en una barra de herramientas interactiva en la parte inferior de cada respuesta HTML. Un panel de administración dedicado proporciona un análisis detallado de cada perfil.

WebProfiler envuelve y decora muchos subsistemas del núcleo de Drupal para interceptar y registrar sus operaciones, dando a los desarrolladores una visibilidad sin precedentes del rendimiento de la aplicación. Las características incluyen análisis de consultas de base de datos con resaltado de consultas lentas, seguimiento de aciertos/fallos de caché, perfilado de plantillas Twig, monitoreo de escuchadores de eventos y medición de Core Web Vitals.

Importante: WebProfiler no debe usarse en entornos de producción ya que reemplaza subsistemas del núcleo de Drupal, lo que puede provocar problemas de rendimiento.

Features

  • Barra de herramientas interactiva mostrada en la parte inferior de cada página con métricas clave de un vistazo
  • Panel de control completo para análisis detallado de perfiles con múltiples paneles de recopiladores de datos
  • Perfilado de consultas de base de datos con seguimiento de tiempo de ejecución, resaltado de consultas lentas e identificación del origen de consultas
  • Monitoreo de aciertos/fallos de caché en todos los bins de caché con información detallada de CID y tags
  • Seguimiento de uso de memoria mostrando consumo máximo de memoria y límites
  • Análisis de solicitud/respuesta incluyendo cabeceras, cookies, datos de sesión, parámetros GET/POST y placeholders de BigPipe
  • Recopilación de métricas de tiempo usando Symfony Stopwatch para desglose detallado de rendimiento
  • Información de sesión de usuario incluyendo proveedor de autenticación, roles y detalles del usuario
  • Perfilador de renderizado de Views mostrando tiempos de construcción, ejecución y renderizado con enlaces directos de edición
  • Recopilador de datos de formularios mostrando todos los elementos del formulario, sus tipos y estado de acceso
  • Seguimiento de bloques tanto cargados como renderizados con información de región y plugin
  • Análisis del contenedor de servicios mostrando todos los servicios registrados, su estado de inicialización y middlewares
  • Monitoreo del despachador de eventos mostrando escuchadores de eventos llamados y no llamados con prioridades
  • Perfilado de assets para CSS, JavaScript y bibliotecas de Drupal usadas en cada página
  • Recopilador de datos de tema con perfilado de Twig, listados de filtros/funciones y visualización del gráfico de llamadas de renderizado
  • Seguimiento de SDC (Single Directory Components) con metadatos de componentes y documentación
  • Monitoreo de cliente HTTP para solicitudes salientes con detalles de solicitud/respuesta y tiempos
  • Perfilado del sistema de correo mostrando todos los correos enviados con información del plugin
  • Recopilador de rutas mostrando todas las rutas registradas con sus controladores
  • Monitoreo de extensiones mostrando todos los módulos y temas activos
  • Seguimiento de Configuration y State API
  • Monitoreo de cadenas de traducción tanto traducidas como no traducidas
  • Recopilación de datos de rendimiento del frontend incluyendo Core Web Vitals (LCP, FID, CLS)
  • Intercepción de redirecciones para facilitar la depuración de cadenas de redirección
  • Integración con IDE con enlaces de archivo clicables para PHPStorm, VS Code, Sublime y otros editores
  • Comando Drush para exportar datos de consultas de base de datos a formato CSV
  • Manejador de errores personalizado con renderizado detallado de excepciones (puede desactivarse)
  • Almacenamiento de perfiles con ubicación configurable y purga automática al limpiar caché

Use Cases

Depuración de Cargas de Página Lentas

Usa el panel de Tiempo para identificar qué partes de la solicitud están tardando más. Habilita el StopwatchTracer en settings.php para ver desgloses detallados de tiempos. Revisa el panel de Base de Datos para consultas lentas (resaltadas según el umbral) e identifica problemas de consultas N+1 examinando los conteos y orígenes de consultas.

Optimización de Consultas de Base de Datos

El panel de Base de Datos muestra todas las consultas ejecutadas durante una solicitud con tiempos de ejecución, información del origen y la capacidad de ejecutar EXPLAIN en las consultas. Ordena por duración para encontrar las consultas más lentas. Exporta datos de consultas usando Drush para análisis offline o revisión del equipo.

Análisis de Eficiencia de Caché

El panel de Caché muestra aciertos y fallos de caché en todos los bins de caché. Identifica elementos de caché que se solicitan múltiples veces (indicando oportunidades potenciales de optimización) y rastrea qué cache tags se están usando.

Depuración de Formularios

El panel de Formularios muestra todos los formularios renderizados en una página incluyendo sus elementos, tipos y estado de acceso. Útil para entender la estructura de formularios y depurar problemas de control de acceso.

Perfilado de Rendimiento de Views

El panel de Views muestra tiempos de construcción, ejecución y renderizado para cada vista mostrada en la página. Los enlaces directos de edición facilitan saltar a la configuración de Views para optimización.

Seguimiento de Solicitudes HTTP Externas

El panel HTTP monitorea todas las solicitudes salientes del cliente HTTP, mostrando detalles de solicitud/respuesta y tiempos. Esencial para depurar integraciones de API e identificar dependencias externas lentas.

Depuración de Tema y Plantillas

El panel de Tema proporciona perfilado de Twig con un gráfico de llamadas de renderizado que muestra exactamente qué plantillas se renderizaron y en qué orden. Lista todos los filtros, funciones y globales de Twig disponibles.

Monitoreo de Entrega de Correo

El panel de Correo captura todos los correos enviados durante una solicitud, mostrando el plugin de correo usado, destinatarios y contenido del mensaje. Invaluable para depurar funcionalidad relacionada con correo.

Análisis de Rendimiento del Frontend

El panel de Frontend recopila datos de rendimiento del lado del navegador incluyendo métricas de la Navigation Timing API y Core Web Vitals (LCP, FID, CLS). Esencial para entender la experiencia real del usuario.

Análisis del Contenedor de Servicios

El panel de Servicios muestra todos los servicios registrados con su estado de inicialización, ayudando a identificar servicios que se instancian innecesariamente o entender el contenedor de inyección de dependencias.

Tips

  • Usa la barra de herramientas para identificar rápidamente problemas de rendimiento - busca conteos altos de consultas, tiempos de ejecución largos o excesivos fallos de caché
  • Exporta consultas de base de datos a CSV para análisis complejos o para compartir con administradores de base de datos
  • Configura la integración con el IDE para hacer clic directamente desde los stack traces al código fuente en tu editor
  • Habilita la intercepción de redirecciones cuando depures cadenas de redirección o flujos de autenticación
  • Usa el panel de Servicios para identificar servicios que se están instanciando pero pueden no ser necesarios
  • El gráfico de llamadas de Twig del panel de Tema ayuda a entender la herencia de plantillas y el orden de renderizado
  • Revisa el panel de Eventos para ver qué escuchadores de eventos realmente se están llamando vs registrados pero no usados
  • El panel de Frontend requiere ejecución de JavaScript - verifica la consola del navegador si los datos no aparecen
  • Los tokens de perfil pueden guardarse como marcadores o compartirse para depuración colaborativa
  • Usa exclusiones de rutas para reducir la sobrecarga de perfilado en endpoints AJAX que no necesitas depurar

Technical Details

Admin Pages 3
Configuración de WebProfiler /admin/config/development/devel/webprofiler

Configura el comportamiento de WebProfiler incluyendo qué recopiladores de datos mostrar en la barra de herramientas, configuración de consultas de base de datos, integración con IDE y gestión de perfiles.

Informes de WebProfiler /admin/reports/profiler/list

Ver una lista de todos los perfiles guardados. Filtrar perfiles por dirección IP, URL, método HTTP y limitar el número de resultados. Haz clic en un token de perfil para ver información detallada en el panel de control.

Panel de Control de WebProfiler /admin/reports/profiler/view/{token}

Vista detallada del panel de control para un perfil específico. Muestra información completa recopilada por todos los recopiladores de datos activos organizados en paneles. Cada panel proporciona información profunda sobre diferentes aspectos de la solicitud.

Permissions 2
Acceder a webprofiler

Acceder a los datos recopilados por webprofiler. Los usuarios con este permiso pueden ver el panel de control e informes de perfiles. Este es un permiso de acceso restringido.

Ver barra de herramientas de webprofiler

Ver la barra de herramientas de webprofiler. Los usuarios con este permiso verán la barra de perfilado en la parte inferior de las páginas.

Drush Commands 1
drush webprofiler:export-database-data

Exporta datos de consultas de base de datos de un perfil a un archivo CSV. Útil para analizar consultas fuera del panel de control o compartir con miembros del equipo.

Troubleshooting 7
La barra de herramientas no aparece en las páginas

Asegúrate de que el usuario tiene el permiso 'view webprofiler toolbar'. Verifica si la ruta actual está en la configuración de 'Excluir barra de herramientas' o 'Excluir rutas'. La barra de herramientas solo aparece en respuestas HTML.

Las métricas de tiempo no muestran datos detallados

Agrega $settings['tracer_plugin'] = \Drupal\webprofiler\Plugin\Tracer\StopwatchTracer::class; a tu archivo settings.php y limpia la caché.

Conflictos con manejador de errores personalizado

WebProfiler usa un manejador de errores personalizado. Si tienes otro manejador de errores (como Ignition), agrega $settings['webprofiler_error_page_disabled'] = TRUE; a settings.php.

Demasiados perfiles acumulándose

Habilita 'Purgar al limpiar caché' en la configuración, o purga manualmente los perfiles desde la página de configuración. Considera reducir la retención de perfiles si el espacio en disco es una preocupación.

El panel de control carga lentamente con muchas consultas

Ajusta la configuración 'Número de consultas después del cual se desactiva la salida detallada' a un valor más bajo. Esto evita renderizar miles de detalles de consultas que pueden ralentizar el navegador.

Necesito cambiar la ubicación de almacenamiento de perfiles

Agrega esto a tu services.yml: parameters: webprofiler.file_profiler_storage_dns: 'file:/tmp/profiler'

Los enlaces del IDE no funcionan correctamente

Configura el ajuste de IDE para que coincida con tu editor. Si usas desarrollo remoto, configura los mapeos de rutas remotas y locales para traducir las rutas del servidor a rutas locales.

Security Notes 6
  • WebProfiler NUNCA debe habilitarse en sitios de producción ya que expone información interna detallada de la aplicación
  • El permiso 'access webprofiler' debe restringirse solo a desarrolladores de confianza
  • Los archivos de perfil pueden contener información sensible incluyendo datos POST, cookies e información de sesión
  • Los registros de consultas de base de datos pueden exponer datos sensibles en los parámetros de consulta
  • Considera usar exclusiones de rutas para evitar el perfilado de endpoints sensibles
  • Los perfiles se almacenan en el directorio de archivos públicos por defecto - considera moverlos a una ubicación no accesible por web en entornos compartidos