Cómo evitar el alto consumo de CPU de Disqus

Una de las métricas que debes observar para una buena optimización de tu sitio WordPress es el consumo de CPU, porque recuerda que WPO no es velocidad percibida por el usuario o los medidores online, sino optimización en toda su extensión, que se podría resumir en:

  • Optimización de consumo de recursos del servidor
  • Optimización de consumo de recursos del navegador
  • Velocidad óptima de entrega de contenidos

Todo ello se resumirá en:

Y hoy te quiero hablar del uso intensivo que hace el sistema de comentarios Disqus en WordPress, que afecta enormemente al consumo de CPU de tu alojamiento.

Es algo que si no solucionas podría provocar caídas de tu web en ocasiones, y altos consumos de los recursos de tu alojamiento, siempre.

Disqus mola mucho, pero mucho, es un sistema mucho más eficaz de gestión de comentarios que el nativo de WordPress, pero …

¿A que no quieres que tu web se caiga por culpa del sistema de comentarios?

¿A que no quieres pagar más hosting por culpa del sistema de comentarios?

El culpable del alto consumo de CPU de Disqus

El elemento que provoca un alto consumo de CPU por parte de Disqus es nada menos que su motor de sincronización de comentarios.

Es el mecanismo por el cual los comentarios de WordPress siempre están sincronizados con los de Disqus, para que tu administración siempre muestre los últimos comentarios dejados en el sistema externo.

Este motor, generado por la tarea en el cron de WordPress llamada dsq_sync_forum.

Esto genera miles de llamadas al WP-cron desde la tabla options de la base de datos, resultando en un alto consumo de CPU de tu servidor, que puede llegar a provocar caídas de tu web.

Cómo reducir la carga de CPU provocada por Disqus

Visto el problema vamos a ver las posibles soluciones al mismo. Elige primero no siguiendo el orden en el que yo te las pongo, empieza por la que te sientas más seguro de aplicar.

Solución 1: Desactiva la carga automática del cron

Si tienes claro que quieres desactivar la tarea puedes usar la herramienta PHPMyAdmin de tu hosting para localizar la línea llamada cron en la tabla options.

Una vez ahí edítala y borra la línea que carga dsq_sync_forum en el cron.

Guarda los cambios y habrás evitado la carga de la sincronización de comentarios en el cron de WordPress y, en consecuencia, liberado de carga la CPU de tu alojamiento.

Advertencia: Haz antes copia de seguridad de tu base de datos, esta modificación puede dejar tu sitio inservible si no sabes lo que haces.

Solución 2: Carga condicional de Disqus

Otra posible solución es usar el plugin Disqus Conditional Load, que permite en sus ajustes especificar como se cargará Disqus.

En nuestro caso el modo adecuado sería activar la carga de Disqus On click, para que los usuarios tengan que hacer clic para ver los comentarios.

Con esto no eliminas la tarea del cron pero sí reduces muchísimo el consumo por defecto de Disqus en otros aspectos.

Solución 3: Frena la sincronización de comentarios de Disqus

Este es un método bien sencillo, para todos los públicos.

Ve a la administración de tu WordPress y accede al menú Comentarios > Disqus > Plugin Settings y desactiva la sincronización automática para liberar el cron de WordPress de esta carga.

Guarda los cambios, que no se te olvide.

Ahora bien, como ya no se sincronizarán automáticamente los comentarios, de vez en cuando pásate por esta misma página de ajustes del plugin y activa manualmente la sincronización.

Suele tardar unos minutos en la mayoría de los sitios, y no hay que estar mirando la pantalla, recibes un correo de Disqus cuando termina.

Solución 4: Desactiva totalmente el cron desde wp-config.php

Otra solución, algo radical hay que reconocerlo, es desactivar el cron de WordPress. Un método desactivarlo en el archivo wp-config.php de tu instalación.

Para ello, busca la línea siguiente:

define('DB_COLLATE', '');

Y justo debajo añade esta otra:

define('DISABLE_WP_CRON', true);

Guarda los cambios en el archivo y ya no se ejecutará la sincronización de los comentarios de Disqus, ni ninguna otra tarea, en el cron de WordPress.

Eso sí, tampoco funcionarán muchas otras cosas en tu WordPress, como la publicación de entradas publicadas, automatizaciones, comprobación de enlaces entrantes y decenas más de procesos, pero lo que si te aseguro es que tu web irá como la seda, y el consumo de CPU y resto de recursos del servidor bajará a casi cero.

Sí, reconozco que es una solución radical, pero te animo a probarla al menos una vez en la vida, y a comprobar si realmente necesitas todos esos procesos cron que se ejecutan en WordPress 😉

Siempre puedes volver a activar el cron borrando la línea anterior o cambiándola así:

define('DISABLE_WP_CRON', false);

Solución 5: Desactiva totalmente el cron desde .htaccess

Otro modo alternativo de desactivar totalmente el cron de WordPress es añadiendo lo siguiente a tu archivo .htaccess:

<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteCond %{QUERY_STRING} !=""
 RewriteCond %{QUERY_STRING} !^s=.*
 RewriteCond %{QUERY_STRING} !^q=.*
 RewriteCond %{QUERY_STRING} !^url=.*
 RewriteCond %{QUERY_STRING} !^ver=.*
 RewriteCond %{REQUEST_URI} !^/wp-admin.*
 RewriteRule ^(.*)$ /$1? [R=301,L]
</IfModule>

Guarda los cambios y se desactivarán todas las tareas del cron de WordPress, garantizado.


Bueno, espero que lo consigas y reduzcas el consumo de CPU de tu web con estos trucos para optimizar Disqus.

Si te interesa este tema del WPO, de la optimización de carga puedes echar un vistazo a estos otros artículos:

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(5 votos, promedio: 5)

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

5 comentarios en “Cómo evitar el alto consumo de CPU de Disqus”

  1. Fernando es genial esto.
    Yo siempre desactivo el cron desde el wp-config en los sitios con mucho trafico, porq sino por cada visita se esta ejecutando.
    Lo que te faltó aca seria de ir al cpanel (o por ssh con crontab) y habilitar el cron cada X minutos 🙂

    desde consola:
    crontab -e
    */10 * * * * curl > /dev/null 2>&1

    o sino asi:
    */10 * * * * cd /var/www/example.com/htdocs; php /var/www/example.com/htdocs/wp-cron.php?doing_wp_cron > /dev/null 2>&1

    Y desde el cpanel solo deberian agregar lo que esta despues de los * * * *
    y configurarlo todos los dias cada 10 minutos por ejemplo.

  2. Gracias… Puesto que sugieres probarlo al menos una vez en la vida, he desactivado completamente el cron… Parece que interfiere con «iThemes Security», al menos con la opción «Ocultar escritorio»… pues deja de ocultarlo… en Chrome, pues en Firefox sigue ocultándolo… Y en una ventana de incógnito de Chrome también sigue ocultándolo… por lo que cabe la posibilidad de que desactivar completamente el cron sea una buena opción para mí…

    Por otra parte, he instalado «Disqus Conditional Load»… Sugieres la opción «On Click», pero supongo que es igualmente válido «Al hacer scroll», como lo tienes aquí… ¿Es correcto?

    Gracias de nuevo…

    1. Lo del cron e Ithemes sí que es raro, suele ser más por cosas de la caché. En serio, es raro, no encuentro la lógica a eso del cron con el cambio de url de login.

      Yo creo que es mejor on click porque es más óptimo, pero depende de tu audiencia, si quieres facilitarles comentar igual es mejor al hacer scroll

      1. Como decía, el fenómeno paranormal solo sucede con Chrome, y desaparece en la ventana de incógnito, o al eliminar las cookies y demás… por lo que Chrome tiene algo que ver, pero no todo, pues solo sucede en 2 de mis 3 sitios… en el tercero todo normal…

        Puesto que por lo visto no afecta al usuario ni a la seguridad, he dejado el cron desactivado en mis Sitios, y Disqus se muestra al hacer scroll… De momento probaré así…

        Gracias…

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

Ir arriba Ir al contenido