Cómo Diagnosticar el Uso Intensivo de Admin-Ajax en su Sitio WordPress

Actualizado November 17, 2017

Un escenario muy común cuando se trata de WordPress es el diagnóstico de uso intensivo de admin-ajax.php. Si ha estado trabajando con WordPress por un tiempo, lo más probable es que haya encontrado esto al ejecutar pruebas de velocidad o comprobar los logs de acceso al servidor. Esto es generalmente causado por plugins de terceros o solicitudes frecuentes del admin dashboard no cacheables, debido a la API de Heartbeat, tal como borradores autoguardados. Es importante sin embargo, que usted diagnostique picos altos de admin-ajax.php cuando los vea, ya que se sabe que causan que un sitio se llegue a ser muy lento. Eche un vistazo a las siguientes recomendaciones sobre algunas maneras de abordar el problema de admin-ajax.php en WordPress.

¿Qué Es el Archivo admin-ajax.php?

El archivo admin-ajax.php en sí no es malo cuando se usa correctamente. Es parte del núcleo, y fue agregado por el equipo de desarrollo de WordPress en la versión 3.6. El propósito de admin-ajax.php es crear una conexión entre el navegador y el servidor usando AJAX. Esto permite una funcionalidad extendida, tal como mejorar el guardado automático, el seguimiento de revisiones, los tiempos de espera de login, la administración de sesiones y las notificaciones sobre una publicación bloqueada cuando hay varios editores. Todas estas son grandes características, especialmente para ésos que trabajan con administradores y autores múltiples.

La idea es tener una API relativamente simple que envía peticiones XHR al servidor cada 15 segundos y activa eventos (o callbacks) al recibir datos. Otros componentes podrían “hitch a ride” o ser notificados sobre las actividades de otro usuario. Esto se puede utilizar para bloquear la edición simultánea de widgets y menús o cualquier otra tarea que requiera actualizaciones regulares desde el servidor — Make WordPress Core

Y para aquellos de ustedes que tal vez no son tan inteligentes de tecnología, su único encuentro con admin-ajax.php podría ser simplemente cuando está tratando de averiguar por qué está frenando sus pruebas de velocidad en herramientas tales como Pingdom (como se ve en el ejemplo siguiente). O puede que esté viendo toneladas de solicitudes en los logs de acceso de su host.

admin-ajax

uso intensivo de admin ajax

Ver admin-ajax.php en pruebas de velocidad y logs de acceso son típicamente el resultado de dos escenarios diferentes que suceden, uno en front-end y el otro en back-end, en los cuales echaremos un vistazo a continuación.

1. Plugins Pueden Causar que admin-ajax.php Lleguen a Picos

El primer y más común problema que la gente ve con admin-ajax.php son aquellos que son generados de plugins de terceros. Esto se ve típicamente en el front-end y se muestran en las pruebas de velocidad. Los desarrolladores utilizan este archivo y/o AJAX para agregar funcionalidad a sus plugins. Pero sólo porque ve una solicitud de admin-ajax.php no significa necesariamente que está ralentizando su sitio. AJAX se carga después de cargar la página y ciertas solicitudes se pueden cargar asincrónicamente. Sin embargo, esto no siempre significa que el desarrollador lo esté haciendo de la manera correcta o que el sitio esté codificado efectivamente desde el punt o de vista del rendimiento. Para los desarrolladores, he aquí algunos consejos sobre cómo usar adecuadamente AJAX en temas y plugins de WordPress.

A continuación, se presentan algunos ejemplos sobre cómo diagnosticamos rápidamente un pico de admin-ajax.php. Estamos usando GTmetrix, debido al hecho de que nos permite estudiar la publicación individual y datos de respuesta. Pingdom, por desgracia, no le permite ver los datos del formulario de solicitud. También puede usar Google Chrome Devtools o WebPageTest.

Alto Pico de admin-ajax.php Desde el Plugin Visual Composer

Aquí está un sitio de terceros de WordPress que encontramos que estaba encontrando unos picos muy grandes con admin-ajax.php. Como puede ver, GTmetrix está reportando un pico de más de 8 segundos! El resto de su cascada se ve bien, pero esto es algo que definitivamente necesita ser resuelto por el propietario del sitio.

POST admin ajax php

POST admin ajax php

Si hace clic en la solicitud POST admin-ajax.php , puede ver tres pestañas diferentes: Headers, Post y Response. Al diagnosticar estos tipos de problemas, realmente estamos interesados en el contenido de las pestañas Post y Response. Para este sitio, podemos ver instantáneamente evidencias en la pestaña Response. Podemos ver que parte de la solicitud tiene que ver con el script  “vc_shortcodes-custom-css”.

respuesta POST

Una copiar y pegar rápido en Google y podemos ver al instante que esto viene del plugin de constructor de página de Visual Composer para WordPress. Usted se sorprendería de cuánto indexa Google.

códigos cortos de visual composer admin ajax

códigos cortos de visual composer admin ajax

El siguiente paso para esta persona debe ser asegurarse de que su plugin Visual Composer esté completamente actualizado. Si es así, deben ponerse en contacto con los desarrolladores del plugin e informar del problema con admin-ajax.php. De hecho, esto parece ser un problema común con este plugin, como se ve en esta publicación sobre Stack Overflow. Lo bueno de WordPress es que si un desarrollador no puede resolver el problema con el plugin, probablemente existen plugins alternativos disponibles que intentan hacer lo mismo. Por ejemplo, cuando se trata de constructores de páginas, también puede probar Beaver Builder o Elementor.

Alto Pico en admin-ajax.php por Notification Bar Plugin

Aquí hay un segundo ejemplo en nuestro sitio de desarrolladores. Al instalar un cierto plugin de terceros, al instante vimos un pico enorme para admin-ajax.php.

admin ajax lento gtmetrix

admin-ajax.php lento GTMETRIX

Una vez más, si hace clic en la solicitud POST admin-ajax.php , usted puede investigar más. Podemos ver que en los datos de publicación tiene “action=mtsnb_add_impression&bar_id=88&ab_variation=none.”

dato de gtmetrix post

dato de GTMETRIX post

Típicamente, la primera parte de una acción Post también se relacionará con una clase CSS en un plugin. Así que de nuevo, hacemos una rápida búsqueda en Google de “mtsnb” y el primer resultado que aparece es de hecho, el plugin Notification Bar que tenemos en nuestro sitio de desarrollo.

mtsnb

búsqueda de mtsnb

Si usted es un desarrollador, por supuesto hay otras maneras de rastrear qué plugin podría estar generando respuesta POST, pero hemos encontrado que una prueba de velocidad rápida y la búsqueda de Google también puede ser muy eficaz.

La Forma Absolutamente Segura De Determinar el Origen de admin-ajax.php

Arriba hay algunas maneras fáciles de encontrar rápidamente el plugin en su sitio WordPress que podría estar causando el problema. En nuestra experiencia, eso funciona el 99% del tiempo. Pero para los otros tiempos cuando los datos o las acciones de la publicación no pudieron ser tan claros, usted puede siempre hacerlo a la forma antigua. Simplemente deshabilite todos los plugins en su sitio WordPress. Ejecute una prueba de velocidad en su sitio, si admin-ajax.php no se encuentra en ninguna parte, vuelva a habilitar cada plugin uno por uno mientras ejecuta pruebas cada vez. El uso de un proceso de eliminación es una manera segura de encontrar el origen.

Este también es un momento perfecto cuando el Entorno de Pruebas de Kinsta viene muy útil. Simplemente copie su sitio de WordPress al entorno de pruebas y ejecute las pruebas sin afectar su sitio en producción. Una vez que determine la causa, puede realizar los cambios en su sitio vivo.

El reporte sobre el uso de AJAX en la analítica de MyKinsta puede otro método genial para resolver este tipo de problemas ya que usted puede determinar si hay picos por el uso de AJAX durante ciertos períodos.

Monitoreo del rendimiento por el uso de AJAX

Monitoreo del rendimiento por el uso de AJAX

2. Problemas de CPU con admin-ajax.php en Back-end

El segundo gran problema es que la API de Heartbeat de WordPress utiliza admin-ajax.php para ejecutar llamadas AJAX desde el navegador web, y puede usar una CPU alta. Cada solicitud de AJAX también carga el backend completo de WordPress mientras que circunviene todas las formas de cache. Normalmente no verá esto en pruebas de velocidad. Esto es especialmente importante saber para los que están usando los hosts compartidos baratos, pues no tienen mucho espacio de maniobra cuando se trata del uso del CPU. WP Tavern experimentó esto en primera mano y en realidad migró fuera de HostGator debido a suspensiones múltiples.

Un escenario que hay que tener cuidado es el autoguardado en WordPress y dejar las pestañas abiertas. Por ejemplo, lanzamos un nuevo borrador en nuestro sitio de desarrollo y dejamos la pestaña abierta. Por defecto, la API Heartbeat realiza un sondeo en el archivo admin-ajax.php cada 15 segundos para realizar un autoguardado. Puede ver esto a continuación desdee el log de acceso del tablero MyKinsta. Si dejáramos nuestra pestaña abierta y dejar nuestro ordenador, esa sola publicación podría generar 5.760 peticiones en un día!

Solicitudes de autoguardado frecuente de admin ajax.php

Solicitudes de autoguardado frecuente de admin ajax.php

Eso es un montón de peticiones en el back-end para sólo una persona. Pero, ¿qué sucede si se trata de un sitio donde hay varios editores? Estas peticiones pueden multiplicarse con bastante rapidez. En realidad, hemos experimentado esto en nuestro reciente estudio de caso con DARTDrones, en el cual les estábamos ayudando a escalar su sitio WooCommerce para Shark Tank. Recibieron más de 4,100 llamadas admin-ajax.php en un período de 24 horas con sólo 2,000 visitantes únicos. Eso no es una gran proporción de solicitudes de visitas. Fuimos capaces de determinar esto desde la URL wp-admin referrer, que se estaba generando debido a sus administradores actualizando el sitio en preparación para el show.

Uso intensivo de admin-ajax.php en dartdrones.com

uso intensivo de admin-ajax.php en dartdrones.com

Hay un camino para ayudar a solucionar algunos de los problemas con el sondeo en admin-ajax.php en el back-end cuando se trata de auto-guardar, revisiones, bloqueo, etc. Ahí es donde el plugin gratis Heartbeat Control de Jeff Matson entra en acción.

heartbeat control

heartbeat control plugin

El plugin de Heartbeat Control tiene actualmente más de 50,000 instalaciones activas con un 5 de 5 estrellas. Han pasado 2 años desde que se ha actualizado, pero eso es simplemente debido al hecho de que nada ha cambiado mucho con la forma en que API Heartbeat funciona. Puede descargarlo desde el repositorio de WordPress o buscarlo en el panel de WordPress en “Agregar nuevos” plugins.

El plugin le permite administrar la frecuencia de la API de heartbeat de WordPress con sólo unos simples clics. La primera opción le permite controlar las ubicaciones de los latidos del corazón, como deshabilitar en todas partes o solo permitirlo en las páginas de edición de publicaciones. Recomendamos el uso de este último a menos que esté seguro de que puede deshabilitarlo en todas partes sin romper algún plugin que podría utilizarlo.

ubicaciones heartbeat control

ubicaciones heartbeat control

La segunda opción le permite elegir la frecuencia de intervalo. Cambiar de 15 segundos a 60 segundos puede ayudarle a reducir drásticamente la cantidad de solicitudes y ahorrar en recursos del servidor (reducir la carga del CPU).

frecuencia heartbeat control

frecuencia heartbeat control

Otra opción es utilizar un premium plugin como perfmatters (desarrollado por un miembro del equipo de Kinsta) lo cual le permite desactivar heartbeat, cambiar la frecuencia de heartbeat y modificar el intervalo de auto-guardar.

Desactivar y limitar heartbeat con perfmatters

Desactivar y limitar heartbeat con perfmatters

Resumen

Como puede ver, hay algunas opciones rápidas y fáciles de diagnosticar y resolver problemas de admin-ajax.php. Típicamente surgen de plugins de terceros que pueden estar en conflicto entre sí o quizás estén mal codificados. Si usted está experimentando carga del CPU en el back-end como resultado de admin-ajax.php, también podría considerar un host de WordPress administrado como Kinsta que tiene más experiencia en el trato con estos tipos de problemas de rendimiento.

¿Ha tenido problemas con admin-ajax.php en su sitio WordPress? O tal vez usted tenga algunos consejos adicionales. Si es así, nos encantaría escuchar sus pensamientos a continuación.

Este artículo fue escrito por Brian Jackson

Brian enfoca en nuestros esfuerzos de marketing a través de las redes sociales: desde el desarrollo de la nueva estrategia de crecimiento online, creación de contenido, optimización técnica de buscadores hasta nuestra expansión en la comunidad WordPress. Es apasionado por Wordpress lleva usándolo desde hace más de 8 años e incluso está desarrollando su propio plugin exclusivo. A Brian le encanta el blogueo, películas, montar en bici y trabajar con sitios web.

Artículos relacionados

Deja un comentario

kinsta newsletter

¿Utilizas WordPress?

¡Únete a más de 20.000 lectores que ya reciben nuestro newsletter semanal GRATUITO con consejos de WordPress sobre cómo generar más tráfico e ingresos para tu negocio!

You have Successfully Subscribed!

Send this to a friend