tantosoft.com

Optimización Magento con APC y tmpfs

En este artículo comentamos la forma de configurar una cache de dos niveles en Magento, configurando el servidor (debian) con APC y creando un segundo nivel de cache en RAM para mejorar todavía más el rendimiento.

Como por aquí nos gusta mucho Debian, pondremos todos los ejemplos, rutas de ficheros, etc. sobre un servidor Debian Wheezy.

Instalación de APC en Debian

El primer paso para conseguir hacer funcionar Magento con APC, por supuesto, es instalarlo en nuestro servidor. Realmente es muy sencillo, pero ahí va:

# apt-get install php-apc
# /etc/init.d/apache2 restart
# /etc/init.d/php5-fpm restart
También nos resultará interesante tener un administrador donde ver las estadísticas de uso de la cache. Al instalar el paquete anterior con apt, viene un gestor muy sencillo que sólo tenemos que mover a una carpeta nuestra Web (recomendable protegerlo convenientemente con apache auth, o editar el mismo fichero para cambiar el password y usuario que vienen por defecto)
# sudo cp /usr/share/doc/php-apc/apc.php > /path/a/mi/web/apc.php

Si accedemos al gestor que acabamos de mover, deberíamos ver algo como esto:

Gestor de Cache APC

 

Configuración de APC

A continuación debemos configurar los parámetros necesarios de APC para trabajar con Magento.

La configuración óptima dependerá de nuestro servidor, de la cantidad de RAM disponible, de si ejecutamos PHP como módulo o como CGI, y de un sinfin de otros parámetros, pero a continuación os indicamos una posible configuración para comentar los parámetros básicos.

La configuración se realiza en el archivo: /etc/php5/conf.d/20-apc.ini

extension=apc.so
apc.shm_size=200M ;E
apc.stat=1
apc.enable_cli=1 ;
apc.max_file_size = 5M
apc.mmap_file_mask = /tmp/apc.XXXXXX
apc.ttl = 7200
apc.user_ttl  = 7200
apc.num_files_hint = 10000
 

apc.shm_size es el tamaño que deseamos reservar para la cache APC. Un valor demasiado elevado no significa un mejor rendimiento, ya que en función de la configuración del servidor puede al mismo a hacer swapping a disco con facilidad. Es cuestión de monitorizar y probar. En  nuestro caso, hemos hecho varias pruebas y analizado el resultado a traves del gestor web, y hemos optado por dedicar 200Mb de espacio de ram para el APC.

apc.stat indica si APC debe comprobar si fuentes de PHP han cambiado desde que fueron cacheados en memoria. Si es un servidor en producción y no vais a tocar el código en largo tiempo, es recomendable configurarlo a “0″, pero si sois de los que os gusta tocar, o se hacen ampliaciones continuas puede dar problemas y no detectar los cambios de código/recompiarlo.

Otros parámetros, como apc.cache_by_default y apc.filters os pueden servir para activar APC sólo en algunos dominios o carpetas del servidor, y ejecutando un phpinfo() podéis ver todos los parámetros posibles de configuración. Hay multitud de manuales donde se explica en detalle cada uno de ellos, así que no nos extendemos más.

 

Activar APC en Magento

Como comentábamos en algún artículo anterior, es posible configurar la cache de Magento con uno o con dos niveles, así que detallaremos ambos casos.

Cache de un sólo nivel con APC

Para activar este modo es necesario incluir estas líneas en el fichero de configuración de Magento, app/etc/local.xml

Below is a sample of pre tag or code class:

<global>
...
<cache>
<backend>apc</fast_backend>
<prefix>MIDOMINIO_</prefix>
</cache>
...
</global>

Con esta configuración, todo el sistema de cache de Magento funcionará con APC.

Para configurar una cache en dos niveles, necesitaremos en cambio las siguientes (ojo a las mayúsculas en los nombres):

<global>
...
<cache>
<fast_backend>Apc</fast_backend>
<slow_backend>File</slow_backend>
<prefix>MIDOMINIO_</prefix>
</cache>
...
</global>

En el segundo nivel (slow_backend) podemos elegir entre los valores Database y File.

Slow Backend en Disco con TMPFS

La idea para mejorar el rendimiento de la tienda es configurar el slow_backend en un disco RAM. Con esto evitamos el cuello de botella que siempre supone la escritura en disco y además conseguimos utilizar de forma óptima el sistema de Cache (dos niveles).

Para crear el Disco RAM sólo tenemos que ejecutar lo siguiente:

mount -t tmpfs -o size=128m tmpfs /path/a/mi/web/var/cache/
mount -t tmpfs -0 size=32m tmpfs /path/a/mi/web/var/session/
chmod o+w /path/a/mi/web/var/cache/ /path/a/mi/web/var/session/

Nuevamente, el tamaño del disco que creemos dependerá de la memoria disponible en nuestro servidor.

Con esto, nuestros datos de cache se escriben en RAM, lo que hace la cache mucho más rápida.

 

Comprobar funcionamiento de APC en Magento

Para comprobar que nuestro sistema de cache funciona correctamente, sólo tenemos que acceder a nuestra tienda con un navegador, y luego a nuestro gestor de APC, donde podremos ver los archivos cacheados y el porcentaje de memoria utilizado, tal como se muestra a continuación.

APC aciertos y fallos

APC Ficheros cacheados

Suerte y happy caching!

Quiere contactar con nosotros?

Envíenos un Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. o llámenos a (+34) 698 259 856