Mejorando el rendimiento de Drupal con igbinary

Tutoriales
reading time 10

Vamos a mejorar el rendimiento de nuestro proyecto cambiando el serializador que utiliza PHP para nuestro Drupal. La idea es ganar un rendimiento extra en nuestro proyecto, quiza no sea mucho pero todo suma y mas si lo complementamos con redis por ejemplo.

La idea es cambiar la forma en la que PHP serializa el contenido que va a parar, por ejemplo, a las tablas de caches de nuestro proyecto. Para ello vamos a usar la extensión denominada igbinary.

Si bien podemos crear todo manualmente ya existe un módulo contrib: Igbinary que podemos usar para no tener que crear todo desde 0, qeu sería basicamente crear una clase y un archivo de condiguración.

Que necesitamos para poder usar este serializador, bueno aca algo importante es saber si estamos trabajando en un servidor compartido (shared server) o si tenemos un servidor propio (por ejemplo un VPS). Si el servidor es propio no hay problemas ya que podremos instalar la extensión de php, aquí les dejo la doc oficial: https://www.php.net/manual/en/book.igbinary.php

Los comando que deberíamos usar son los siguientes, revisar para que versión de PHP lo necesitamos en cada caso (necesitaremos tener pecl instalado)

/opt/plesk/php/8.3/bin/pecl install igbinary
echo "extension=igbinary.so" > /opt/plesk/php/8.3/etc/php.d/igbinary.ini

Pero si estamos en un servidor compartido, tendremos que ir a la configuración y verificiar si tenemos la opción de igbinary para activarla, por ejemplo en el caso de hostinger, si la tiene:

igbinary01

 

Ahora que ya lo tenemos instalado, vamos a configurarlo en nuestro Drupal para poder usarlo

Primero tenemos que ir a nuestro php.ini y agregar la siguiente línea

apc.serializer=igbinary

Nota: Si no tenemos acceso al php.ini (por ejemplo en los shared servers), podemos agregar dicha linea usando el file .htaccess

php_value apc.serializer igbinary

Segundo vamos a instalar el módulo contrib igbinary

 composer require 'drupal/igbinary:^2.0@alpha'
 drush en -y igbinary
 drush cr

Con esto ya tendremos la clase IgbinarySerialize.php que usaremos en la config, vamos a ello. Hay varias formas de configuración, la más sencilla es simplemenete en nuestro file de configuración 

Editando el settings.local.php para agregar el file services que nos provee el módulo igbinary que instalamos en el paso anterior

/**
 * Enable local development services.
 */
$settings['container_yamls'][] = DRUPAL_ROOT . '/sites/default/services.yml';
$settings['container_yamls'][] = DRUPAL_ROOT . '/modules/contrib/igbinary/igbinary.services.yml';

Luego de esto limpiamos cache y listo, ya tenemos implementado el cambio que buscábamos.

Ahora veamos una comparativa de este mismo sitio antes y despuués de haber implementados estos cambios. Las pruebas estan realizadas con el sitio https://app.speedvitals.com/

Antes

benckmark before

Después

benckmark after

Como podemos ver, en este caso ha mejorado el rendimiento.

Si bien hay mucho por hacer, esto tambien suma al rendimiento general de nuestro sitio y sin demasiado esfuerzo.

Este post esta inspirado en un video subido por el usuario @nireneko, el link al video de youtube es el siguiente: https://youtu.be/aCkI_BJVyD8

Hasta la próxima !