¿Qué es Query Monitor?
Query Monitor es un plugin gratuito de depuración para WordPress que registra todo lo que ocurre durante la generación de una página y lo presenta en un panel dentro del propio administrador. Lo desarrolla John Blackbourn, tiene más de 200.000 instalaciones activas, y su versión actual es la 4.0.7, publicada el 20 de junio de 2026. Requiere WordPress 6.2 o superior y PHP 7.4 o superior.
Su diferencia frente a otras herramientas de velocidad es el ángulo desde el que mira. PageSpeed Insights o GTmetrix miden el resultado desde fuera: cuánto tardó la página en pintarse en el navegador. Query Monitor mira desde dentro del servidor y responde la pregunta siguiente: qué código concreto consumió ese tiempo. Por eso es la herramienta que convierte "el sitio va lento" en "el plugin de reservas ejecuta 340 consultas en la portada".
El plugin no guarda de forma persistente los datos que recopila ni incluye rastreo de terceros: la información se genera durante la petición y se descarta al terminarla.
Qué muestra cada panel de Query Monitor
Query Monitor organiza la información en paneles independientes a los que se accede desde la barra de administración. Estos son los que resuelven la mayoría de los diagnósticos:
| Panel | Qué responde | Cuándo mirarlo primero |
|---|---|---|
| Overview | Tiempo total de generación, memoria usada, número de consultas | Siempre, como punto de partida |
| Queries | Cada consulta SQL, su duración y qué componente la lanzó | Sitio lento sin causa evidente |
| Queries by Component | Consultas agrupadas por plugin o tema | Sospechas de un plugin concreto |
| HTTP API Calls | Peticiones salientes a servicios externos y su duración | El sitio se cuelga de forma intermitente |
| Hooks & Actions | Qué se enganchó a cada hook y en qué orden | Comportamiento inesperado o filtros que no aplican |
| Scripts y Styles | Archivos JS y CSS encolados, orden y dependencias | Conflictos entre plugins, errores de consola |
| PHP Errors | Avisos, advertencias y errores fatales con archivo y línea | Pantalla en blanco o funciones que no responden |
| Timing | Marcas de tiempo de bloques concretos de código | Optimización fina de un proceso propio |
| Transients | Transients guardados durante la petición | Caché interna que no se está reutilizando |
| Environment | Versiones de PHP, MySQL y WordPress, y límites de memoria | Verificar el entorno antes de culpar al código |
Un detalle que ahorra mucho tiempo: Query Monitor marca en rojo las consultas lentas y los errores. El umbral por defecto para considerar lenta una consulta es de 0,05 segundos, y se puede cambiar con la constante QM_DB_EXPENSIVE.
Cómo instalar Query Monitor
La instalación toma menos de un minuto y no requiere tocar archivos:
- 1 En el panel de WordPress, ve a Plugins → Añadir nuevo.
- 2 Busca "Query Monitor", pulsa Instalar ahora y luego Activar.
- 3 Recarga cualquier página del sitio con tu sesión de administrador abierta. Aparecerá un nuevo elemento en la barra superior con el tiempo de generación, el pico de memoria y el número de consultas.
Al activarse, Query Monitor intenta crear un archivo wp-content/db.php que le permite medir las consultas desde el primer instante de la carga. Si tu instalación ya tiene un db.php de otro plugin, el archivo no se crea y Query Monitor sigue funcionando, pero pierde visibilidad sobre las consultas más tempranas. Al desinstalarlo conviene comprobar que ese archivo desapareció.
Cómo leer el panel en cinco minutos
Este es el recorrido que resuelve la mayoría de los casos, en orden:
- 1 Abre Overview. Anota el tiempo de generación y el número de consultas. Una portada de WordPress razonable se resuelve entre 30 y 80 consultas y por debajo de 0,5 segundos de tiempo de servidor.
- 2 Ve a Queries → by Component. La tabla ordena los plugins por número de consultas y tiempo acumulado. El culpable casi siempre está en las dos primeras filas.
- 3 Ordena por Time dentro de Queries. Una sola consulta de 1,2 segundos hace más daño que doscientas de un milisegundo. Copia su SQL: probablemente le falta un índice o hace un
LIKE '%texto%'sobrewp_postmeta. - 4 Revisa HTTP API Calls. Cada llamada externa suma su latencia al tiempo de respuesta. Una API caída puede añadir cinco segundos a cada visita.
- 5 Mira PHP Errors. Los avisos que nadie ve en producción suelen ser la pista de un plugin desactualizado.
Si el tiempo total es alto pero ni las consultas ni las llamadas HTTP lo explican, el problema está en el propio código PHP: ahí es donde el panel Timing ayuda a acotar qué bloque tarda.
Ejemplo práctico: de "el sitio va lento" a la causa concreta
Un caso típico y muy repetido: una tienda WooCommerce tarda cuatro segundos en cargar la portada. Query Monitor muestra en Overview 620 consultas y 3,1 segundos de tiempo de servidor. En Queries by Component, un plugin de productos relacionados aparece con 480 consultas y 2,4 segundos acumulados.
Al abrir el detalle se ve el patrón: el plugin recorre 60 productos y por cada uno lanza ocho consultas separadas a wp_postmeta, en lugar de pedir todos los datos de una vez. La solución no requiere programar: se reemplaza ese plugin por uno que haga la consulta agrupada, o se limita el widget a mostrar cuatro productos en vez de sesenta. El tiempo de servidor baja a 0,7 segundos.
La lección que deja el ejemplo es el criterio de diagnóstico: el número de consultas por sí solo no es el problema, el problema es un patrón que se multiplica con el catálogo. Un sitio así funciona bien con 20 productos y se derrumba con 2.000.
Qué hacer con lo que Query Monitor encuentra
Query Monitor diagnostica, no repara. Estas son las acciones que corresponden a cada hallazgo típico:
| Hallazgo | Acción concreta |
|---|---|
| Un plugin con cientos de consultas | Buscar alternativa, limitar sus widgets o desactivarlo en las plantillas donde no se usa |
Una consulta lenta sobre wp_postmeta | Revisar índices, reducir el uso de metacampos como filtro o cachear el resultado en un transient |
| Llamadas HTTP externas lentas | Cachear la respuesta con la API de transients y ponerle un timeout corto |
| Errores de PHP repetidos | Actualizar el plugin responsable o reportarlo a su autor |
| Muchos scripts y estilos | Revisar si el tema carga recursos en páginas donde no hacen falta |
| Tiempo alto sin consultas ni llamadas que lo expliquen | Revisar la versión de PHP y los recursos del plan de hosting |
Ese último punto es el que más a menudo se pasa por alto. Si Query Monitor muestra pocas consultas y aun así el tiempo de servidor es alto, el cuello de botella está debajo del software: CPU compartida saturada, disco lento o una versión antigua de PHP. En ese caso ninguna optimización de código va a compensar, y toca revisar el plan de hosting o comparar hosting compartido, VPS y servidor dedicado para ver qué necesita realmente el sitio.
Query Monitor en producción: cómo dejarlo sin exponerlo
Query Monitor solo muestra su panel a usuarios con la capacidad de administrar el sitio, así que un visitante anónimo nunca ve los datos. Aun así, en producción conviene aplicar tres reglas:
- Actívalo para diagnosticar y desactívalo al terminar. La sobrecarga es pequeña pero real, y en un sitio con mucho tráfico se nota.
- Usa
QM_DISABLEDsi prefieres dejarlo instalado. Añadirdefine( 'QM_DISABLED', true );enwp-config.phplo deja inactivo sin desinstalarlo, listo para volver a encenderlo cambiando una línea. - Verifica que
wp-content/db.phpse eliminó después de desinstalar el plugin. Es el residuo más común.
Otras constantes útiles, todas definidas en wp-config.php:
// Considera "lenta" cualquier consulta que supere este tiempo, en segundos.
define( 'QM_DB_EXPENSIVE', 0.05 );
// Desactiva Query Monitor por completo sin desinstalarlo.
define( 'QM_DISABLED', true );
// Muestra el panel de comprobaciones de capacidades (desactivado por defecto).
define( 'QM_ENABLE_CAPS_PANEL', true );
// Oculta las acciones del núcleo en el panel de hooks.
define( 'QM_HIDE_CORE_ACTIONS', true ); Query Monitor frente a otras herramientas de diagnóstico
Ninguna herramienta cubre todo el recorrido de una petición, y por eso conviene saber qué contesta cada una:
| Herramienta | Qué mide | Dónde se queda corta |
|---|---|---|
| Query Monitor | Qué código y qué consultas consumen el tiempo del servidor | No mide la experiencia real en el navegador |
| PageSpeed Insights | Métricas de carga en el navegador (LCP, INP, CLS) | Dice que la página tarda, no qué plugin la frena |
| GTmetrix / WebPageTest | Cascada de recursos y tiempos de red | No ve lo que ocurre dentro de PHP |
| Health Check & Troubleshooting | Aísla plugins y temas sin afectar a los visitantes | Descarta por prueba y error, no da métricas |
| Log de consultas lentas de MySQL | Consultas lentas de todo el servidor, incluidas las de cron | Requiere acceso al servidor y no atribuye la consulta a un plugin |
En la práctica se combinan: PageSpeed Insights detecta que hay un problema, Query Monitor dice de dónde viene, y Health Check confirma la causa desactivando el plugin sospechoso sin afectar a los visitantes.
Cuándo usar Query Monitor (y cuándo no hace falta)
Query Monitor aporta valor real en cuatro escenarios concretos:
- El sitio está lento y no sabes por qué. Es el caso para el que se diseñó y donde ninguna otra herramienta gratuita llega tan lejos.
- Sospechas de un plugin. La vista por componente resuelve la duda en un minuto, sin desactivar nada.
- Antes de lanzar un sitio. Revisar consultas, errores y llamadas externas antes de abrir al público evita sorpresas el día de más tráfico.
- Al desarrollar temas o plugins. Los paneles de hooks, errores y pilas de llamadas ahorran horas de
var_dump.
Y una recomendación honesta: si tu sitio carga rápido y no tienes ningún síntoma, no necesitas instalarlo. Query Monitor es una herramienta de diagnóstico, no una de optimización continua. Para mantener un sitio rápido sirven más un buen hosting para WordPress, la caché bien configurada y las prácticas del artículo sobre cómo optimizar el rendimiento de WordPress.
Query Monitor convierte el diagnóstico de un WordPress lento en un proceso con datos: qué consulta tardó, qué plugin la lanzó, qué API externa está frenando la respuesta y cuánta memoria consumió cada carga. Instálalo cuando tengas un síntoma, sigue el recorrido de cinco pasos —Overview, consultas por componente, consultas por tiempo, llamadas HTTP, errores de PHP— y desactívalo al terminar. Si el panel muestra pocas consultas y aun así el servidor tarda, el problema no está en tu código sino debajo de él, y ahí la conversación pasa a ser sobre recursos e infraestructura. Si tienes dudas durante la implementación, nuestro equipo de soporte técnico está disponible 24/7 para ayudarte.
Hosting con LiteSpeed, NVMe y soporte 24/7 desde $3/mes.