Reducir el consumo de RAM de WordPress con eAccelerator

Hace aproximadamente 15 días, en un fin de semana que tenia un poco de tiempo libre me decidí a jugar un poco con el VPS donde se aloja Kabytes, principalmente probando distintas configuraciones para optimizarlo ya que últimamente WordPress estaba consumiendo todos los recursos.

La cuestión es que por mas pruebas que hice cambiando la configuración de MySQL y de Apache los resultados eran muy similares a los obtenidos en pruebas pasadas, hasta que recordé que hacia un tiempo, y para otro proyecto, había instalado una cache de scripts PHP, para ser mas  preciso eAccelerator.

wordpress eaccelerator

¿Como funciona eAccelerator?

Todo programador sabe (o debería saber) la diferencia entre un lenguaje compilado y uno interpretado. PHP es un justamente un lenguaje interpretado, eso significa que por cada ejecución esta se interpreta, creando una estructura de datos que posteriormente se ejecuta.

Este proceso como se imaginaran es bastante costoso y lento a comparación del realizado por un lenguaje compilado. Quizás este sea unos de los puntos débiles de PHP.

Finalmente tenemos este problema, y es justamente donde entra eAccelerator. Este maravilloso proyecto lo que hace es crear una cache de todos nuestros scripts en PHP, evitando que cada uno de estos tenga que interpretarse por cada ejecución, ahorrando recursos y ganando mucha velocidad.

Lo que esta muy bien de este acelerador es que no requiere acción alguna de nosotros luego de la instalación.

Muchos se estarán preguntando ¿que pasa si un archivo PHP es modificado? la respuesta es simple, nada, eAccelerator detecta la fecha de modificado de un archivo y sobreescribe la cache por la mas reciente. Mas simple imposible.

¿El resultado de instalar eAccelerator con WordPress?

Impresionante, WordPress instalado sin casi utilizar plugin estaba consumiendo 14mb de ram aproximadamente (con picos de casi 20mb), luego de instalar eAccelarator solo 4.48mb.

Consumo ram WordPress

Instalación de eAccelerator

La instalación fue bastante simple y no necesito mas que algunos comandos desde consola, aunque recomiendo que sigan alguna guía exactamente para la versión de sistema operativo instalado en su servidor, les dejo la que hice yo y funciono la perfección, con la configuración sugerida por PHP.ph en CentOS 5.

yum install php-devel
yum groupinstall 'Development Tools'

Cambiamos de directorio, bajamos los archivos e instalamos

cd /tmp
wget http://bart.eaccelerator.net/source/0.9.5.2/eaccelerator-0.9.5.2.tar.bz2
tar xvfj eaccelerator-0.9.5.2.tar.bz2
cd eaccelerator-0.9.5.2
Phpize.
phpize
./configure
Install it.
make
make install

Creamos un archivo de configuración

vi /etc/php.d/eaccelerator.ini [Enter]

extension="eaccelerator.so"
eaccelerator.shm_size="0"
eaccelerator.cache_dir="/var/cache/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

Creamos un directorio donde se va a guardar la cache de scripts y le damos permisos. Finalmente reiniciamos el Apache.

mkdir -p /var/cache/eaccelerator
chmod 0777 /var/cache/eaccelerator
/etc/init.d/httpd restart

Si todo salió bien vamos a tener instalada y funcionando correctamente la extensión de eAccelerator en nuestro servidor.  Para probarlo podemos crear un archivo .php con este contenido.

<?php phpinfo(); ?>

Ejecutarlo en cualquier dominio y ver si la extensión aparece instalada. Otra opción, y mas fácil de ver si esta funcionando, es instalar el plugin para WP TPC Memory usage, que es el del screenshot y verificar en las opciones dentro de la lista de extensiones instaladas si se encuentra la de eAccelerator.

Nota: Buscando mas información sobre eAccelerator y WordPress veo que Andrés en Anieto2k comenta que utilizando Zend Optimizer los resultados pueden ser aún más impresionantes. Será cuestión de probar 😀

Plugin de WordPress para activar eAccelerator

Ahora si no tenes acceso a ssh y no hay forma de modificar la configuración de tu servidor hay una alternativa. Instalar un plugin que activa por nosotros las ventajas de eAccelerator.

Ademas del plugin de eAccelerator en Neosmart nos permiten descargar otro que activa XCache, que hace prácticamente lo mismo, esta ultima alternativa para crear cache PHP es muy similar y aunque no los probé leí en varios lados que es igual de buena. Si alguno tiene ganas y tiempo puede hacer la prueba a ver cual funciona mejor.

Los plugins por lo que leí estan en una etapa muy experimental, asi que es cuestión de hacer la prueba y ver si funciona y que tal es el rendimiento en nuestro servidor. Por favor si alguien lo hace avise en los comentarios 😀