Blog de Entrebits

¿Tienes problemas con los recursos de tu hosting? Limita Heartbeat en WP

Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado
 

Como desarrolladores de sitios en WordPress en Entrebits tenemos la sana costumbre de detener la función Heartbeat de WordPress, esto supone en muchas ocasiones una reducción drástica de la ejecución de admin-ajax.php que no es más que el archivo que ejecuta el administrador de WordPress, también conocido como backend. Empezemos por saber más sobre el Heartbeat y su problemática.

 

¿Qué es el Heartbeat?

 

El Heartbeat fue introducido en WP 3.6 y su función principal es bloquear la edición del contenido que está siendo editado en ese momento por un usuario y proporcionar en tiempo real información a través del escritorio. Es realmente útil si hay varias personas trabajando en un mismo sitio Web. Supongamos que tenemos una tienda online y hay dos gestores, el gerente da la orden de aumentar el stock de un producto, entran los dos gestores de tienda en Woocommerce y modifican a la vez, esto puede crear conflictos, ya que la información del último gestor que entre sobrescribirá la del primero. El bloqueo se representa como un candado junto la entrada, página o producto en el caso de que tengas Woocommerce a editar.

Otros CMS como Joomla! tienen la opción de bloqueo pero en este caso es algo más particular, WordPress introduce un bloqueo temporal, cada 15 segundos comprueba si hay algún contenido en edición y a quién se lo atribuye, cuando deja de editar el bloqueo desaparece solo. Generando una petición POST similar a la del siguiente gráfico -en este caso cada 60 segundos-. Esto hace que se consuma recursos siendo le equivalente en muchos hostings a una visita cada 60 segundos. En el gráfico vemos como hay una sola visita al sitio, en verde, el resto son todas peticiones de Heartbeat. 

 

 

Por supuesto esto consume RAM, CPU y ejecuciones del servidor, si tienes muchas visitas, puede que la suma del Heartbeart de WordPress más las vistas y el rastreo de robots disparen tu cuenta de alojamiento, por ello es recomendable estar preparados, optimizar la ejecución de Heartbeat, vamos al grano.

Algunos hostings como Siteground te ofrecen la posibilidad de saber que script están siendos ejecutados. Esta información es muy útil para saber si el control del Heartbeat está funcionando. En esta cuenta las ejecuciones de index.php y admin-ajax.php eran similares, tras controlar Heartbeat las ejecuciones de admin-ajax son practicamente testimoniales. Esto ahorra una gran cantidad de recursos y ejecuciones al servidor.

 

Optimizando Heartbeat a través del archivo functions.php de tu plantilla

 

Optimizar Heartbeat en WordPress es muy sencillo y es cuestión de unos minutos. Puedes, según tus conocimientos hacerlo de dos maneras: a través de un código en funtions.php o a través de un plugin que añadirá ese mismo código por si solo. 

Para optimizar a través de functions.php debemos localizar la carpeta de nuestra plantilla que debe estar localizada en public_html/wp-content/themes/tuplantilla. Para accede puedes utilizar un cliente ftp como Filezilla o si dispones de CPANEL o FTPWeb, navegando a través del administrador de archivos. Si lo haces así, llegarás al conjunto de archivos de tu plantilla donde encontramos functions.php

Te recomendamos hacer una copia de seguridad de tu archivo functions.php antes de realizar cualquier cambio. Si algo saliera mal, tan solo tendrás que borrar el modificado y volver a cargar el original. Para hacer una copia descarga el archivo en tu ordenador. Para editarlo si estas en CPANEL pudes editarlo haciendo clic en el botón derecho y Edit. Si estas en FTP deberás descargarte el archivo, editarlo con un editor de código como Notepad ++ y volverlo a subir al servidor. Una vez sabemos hemos localizado el archivo y sabemos editarlo, pasemos añadir el código. Para desactivarlo deberás añadir el siguiente código:

add_action( 'init', 'stop_heartbeat', 1 );
function stop_heartbeat() {
wp_deregister_script('heartbeat');
}

Esto parará completamente Heartbeat. Si tu hosting es SiteGround puedes comprobar como las ejecuciones de admin-ajax.php se desplomarán si no estás trabajando con el administrador. Si estás en otro hosting te invitamos a que veas las estadísticas de uso de la CPU y la memoria.

 

Optimizando Heartbeat a través del plugin Heartbeat Control

Antes de empezar, muy importante hacer una cosa o la otra. Si añades el código a functions.php y activas Heartbeat Control corres el riesgo de que tu plantilla falle. De todos modos si recibes algún error basta con desactivar el plugin, ya que este plugin al modificar un archivo de plantilla jamás te va a impedir acceder al administrador de WP ¡Después de esta recomendación empecemos! 

Puedes ir al repositorio oficial de WP y descargarte el plugin o directamente solicitarlo desde el administrador de WordPress. Verás que lleva dos años sin actualizarse, no hay problema, es una característica tan estable de WordPress que realmente no ha requerido de actualizaciones. Lo buscamos y hacemos clic en Instalar Ahora.

Tras instalarlo lo activamos y encontraremos el Panel de control en Ajustes > Heartbeat Control. Su configuración es muy sencilla. En una primera etapa seleccionaremos si queremos desactivarlo del Escritorio -aquí el Heartbeat funciona cada 60 segundos- , de la Edición de Post -cada 15 segundos o de ambos-. Si realmente el sitio va ser gestionado por una sola persona o por varias que no van a coincidir, lo ideal es retirarlo totalmente. 

En una segunda fase si lo deseas, dejando activa alguna de las opciones anteriores, puedes indicar cada cuanto tiempo pasará el Heartbeat, por ejemplo en la Edición de Post podemos pasar de cada 15 a 60 segundos con la siguiente configuración:

 

Tras Guardar Cambios podemos comprobar como se ha añadido automáticamente una nueva línea a funcions.php.

Hasta aquí el control de Heartbeat en WordPress, una optimización sana, siempre y cuando su función no sea necesaria que reducirá el consumo de recursos de nuestro servidor reservándolos para nuestras visitas. Si tienes cualquier duda puedes ponerte en contacto con nuestro Servicio de mantenimiento para WordPress

 

 

Versión de WordPress: Probado sobre WordPress 4.7.5
Plugin Utilizado: Heartbeat Control
Servicio Relacionado: https://entrebits.es/mantenimiento-web-sevilla

Agencia Entrebits. Diseño Web y Marketing Digital en Sevilla



Alameda de Hércules 32 1ª Planta Sevilla, Andalucía


C/Purísima Concepción 1 Dos Hermanas, Andalucía

 

¿Te ayudamos?

Las respuestas a tus preguntas están a solo un clic

WhatsApp
+34 666014559
¿Hablamos?
+34 666014559
¿Te gusta escribir?
hola@entrebits.es

Sevilla

Llámanos Infórmate
Casos de Éxito