Memcached, cache de objetos distribuido en RAM
Normalmente en la mayoría de los sitios web se utiliza cache en disco, algo que es efectivo, pero que no es efectivo al 100% teniendo en cuenta que el acceso al disco duro puede tener un retraso importante incluso cuando usamos discos SSD.
- Memcached Vs Memcache
- Instalar Memcached en CentOS
- Instalar Memcached en Debian
- Configurar Memcached
- Extensión Memcached para PHP en CentOS
- Extensión Memcache para PHP en CentOS
- Extensión Memcached para PHP en Debian
- Extensión Memcache para PHP en Debian
- Memcached y Nginx
- Estadísticas de Memcached
- Memcached para optimizar Wordpress
- Memcached para optimizar Prestashop
Memcached te puede ayudar como cache de objetos o cache distribuido, sobretodo en instalaciones de mucho trafico donde se necesiten varios servidores para mantener la web online, y aunque últimamente Redis también se ha posicionado como una buena opción para cache de objetos distribuido, muchos seguimos prefiriendo Memcached ya que lleva mas tiempo en el mercado y en la mayoría de los casos existe mas compatibilidad con este sistema.
Para solucionar esto aparecen los sistemas como Memcached, un sistema de cache distribuido en memoria RAM que permite un acceso mediante sockets TCP.
El funcionamiento de Memcached es bastante sencillo, ya que los datos se guardan en una tabla hash distribuida donde se le asignan unos valores de identificación.
La arquitectura de funcionamiento de Memcached es cliente-servidor, existe un servidor que guarda datos y un cliente que tiene las ID que le permite acceder a los datos del servidor.
Con Memcached podemos montar infraestructuras muy escalables ya que podemos separar las otras partes del servidor de aplicación y base de datos de los servidores Memcached y aun así conseguir unos buenos tiempos de latencia en las conexiones si se utiliza en una misma red local o en un mismo nodo físico.
Algunos sitios web importantes como Youtube, Facebook o Twitter utilizan Memcached para optimizar el rendimiento y conseguir cachear los datos que tienen que enviar a los usuarios y visitantes.
En Google App Engine o en Amazon AWS podemos encontrar “Instancias” dedicadas a Memcached con una mínima latencia en las conexiones si utilizas como servidor de aplicación una de las “instancias” del servicio.
Memcached Vs Memcache
Son muchos los que buscan la diferencia entre Memcached y Memcache, pero pocos entienden que en realidad no existe diferencia ya que son cosas diferentes.
Como hemos dicho antes, Memcached tiene una arquitectura de funcionamiento de cliente-servidor, por lo que debemos distinguir las dos partes.
El siguiente esquema te ayudara a entender un poco mejor de lo que estamos hablando, teniendo en cuenta que hablamos de PHP:
Como servidor solo existe uno: Memcached. Pero como cliente para PHP esta MEMCACHED Y MEMCACHE, cada uno con sus características.
La primera versión de PHP-Memcache apareció en el año 2004, PHP-Memcached apareció usando PHP-Memcache como base en el año 2009, por lo que PHP-Memcache está mucho más actualizado y por eso consigue mayor velocidad de respuesta.
En esta tabla puedes ver todas las diferencias técnicas que puedes encontrarte entre Memcache y Memcached:
Pero resumiendo, según los benchmarks realizados por algunos de los sitios tecnológicos PHP-Memcached es un 16% más rápido que PHP-Memcache.
Instalar Memcached en CentOS
La instalación de Memcached es muy fácil en la mayoría de los sistemas operativos Linux, ya que Memcached está bastante extendido y sus paquetes se encuentran en todos los repositorios de paquetes oficiales.
En el caso de CentOS 5, CentOS 6 o CentOS 7 solo tenemos que ejecutar el siguiente comando para instalar Memcached:
yum install memcached
Con esto ya tendremos Memcached instalado, ahora vamos a configurar el servicio para que se inicie automáticamente al arrancar el sistema, para ello ejecutaremos el siguiente comando:
chkconfig --levels 235 memcached on
Y para arrancar el servicio de Memcached (servidor) ejecutamos el siguiente comando:
service memcached start
Con esto nuestro servidor Memcached estará listo para guardar y servir datos desde la memoria RAM.
Instalar Memcached en Debian
La instalación de Memcached en Debian, Ubuntu y otros sistemas operativos derivados tampoco es demasiado difícil, lo único que debemos hacer es ejecutar el siguiente comando para instalar Memcached desde los repositorios:
apt-get install memcached
Con esto Memcached estará instalado, podremos configurar Memcached para arrancar al inicio usando el siguiente comando:
update-rc.d memcached enable
Y arrancamos Memcached utilizando el siguiente comando:
/etc/init.d/memcached start
Como puedes ver, en Debian y derivados también es muy fácil instalar Memcached.
Configurar Memcached
La configuración de Memcached no es demasiado compleja, apenas nos deja configurar unos parámetros que son los que nos permitirán configurar nuestro sistema de cache distribuido.
Para editar el archivo de configuracion usaremos un editor de texto en consola como VI o NANO (recomendado), el archivo de configuración podremos encontrarlo en las siguientes rutas:
- Para CentOS y relacionados:
nano /etc/sysconfig/memcached
- Para Debian y derivados:
nano /etc/memcached.conf
Memcached solo tiene algunos parámetros básicos para definir, aunque es posible añadir nuevos parámetros al archivo de configuración:
- PORT: Nos permite configurar el puerto que usaremos para responder las peticiones realizadas al servidor Memcached, el puerto por defecto es el 11211.
- USER: Podremos configurar el usuario utilizado para abrir nuevos procesos de Memcached, por defecto el usuario es MEMCACHED.
- MAXCONN: Este parámetro es importante ya que nos permite configurar el número máximo de conexiones concurrentes que permite el servidor Memcached, por defecto viene configurado en 1024 conexiones concurrentes. El máximo de conexiones concurrentes que podemos configurar es de 4096 conexiones.
- CACHESIZE: Nos permite configurar la cantidad de memoria RAM asignada al servidor Memcached para guardar datos, por defecto está configurada en 64 MB de memoria RAM.
- OPTIONS: Podremos configurar una dirección IP a la que se conectaran otros servidores externos como Nginx, y también podremos configurar otros parámetros como por ejemplo el numero máximo de threads o cores en los que se ejecutara el servicio o el numero máximo de procesos que se abrirán para gestionar el servicio.
Extensión Memcached para PHP en CentOS
Para utilizar Memcached en nuestro proyecto o sitio web PHP necesitaremos la extensión de Memcached para PHP, en CentOS podemos instalar PHP-MEMCACHED usando los siguientes comandos:
yum install php-pear
yum install php-pecl-memcached
Con esto ya podremos utilizar Memcached en aplicaciones web desarrolladas en PHP sobre CentOS.
Extensión Memcache para PHP en CentOS
También es posible instalar la extensión PHP-MEMCACHE en CentOS en lugar de PHP-MEMCACHED, para ello debemos ejecutar los siguientes comandos:
yum install php-pear
yum install php-pecl-memcache
Con esto si tenemos el servidor Memcached instalado podremos usarlo en nuestras aplicaciones PHP.
Extensión Memcached para PHP en Debian
Podemos instalar la extensión cliente de PHP para Memcached en Debian y derivados utilizando los siguientes comandos:
apt-get install php-pear
pecl install memcached
Con esto tendremos instalada la extensión de Memcached para PHP en el servidor Debian o derivados.
Extensión Memcache para PHP en Debian
También podemos instalar la extensión cliente de PHP Memcache para Debian y derivados, para ellos utilizamos el siguiente comando:
apt-get install php-pear
pecl install memcache
Ahora podremos utilizar la extensión memcache para PHP en nuestro servidor Debian.
Memcached y Nginx
Como ya hemos dicho en otro artículo, podemos usar Nginx como HTTP Cache, guardando los datos de cache en memoria RAM utilizando Memcached de forma nativa.
Nginx y Memcached hacen una buena pareja, consiguiendo unos tiempos de respuesta muy buenos y además consiguiendo hacer que el cache de Nginx se comporte de forma más eficiente, como se comporta el cache HTTP de Varnish.
Existe un módulo de Memcached para Nginx que nos permitirá guardar el cache de Nginx en Memcached, en el mismo o en distinto servidor.
Estadísticas de Memcached
Esto ya lo hemos comentado en otro artículo escrito en este blog, es posible obtener estadísticas de funcionamiento de Memcached utilizando un script desarrollado en PHP que obtiene datos de estadísticas recogidos por el servidor Memcached.
Un desarrollador ha querido hacer un fork del archivo de estadísticas de APC y lo ha hecho funcionar para Memcached con unos excelentes resultados e incluso con la posibilidad de obtener estadísticas de varios servidores Memcached al mismo tiempo.
También podemos obtener estadísticas de Memcached en Wordpress utilizando el plugin WP Memcached Manager.
Memcached para optimizar Wordpress
Aunque Wordpress no tiene implementación nativa con Memcached como lo tienen otros gestores de contenido, sí que podemos utilizar Memcached con Wordpress utilizando distintos plugins para guardar diferentes tipos de cache:
- Flexicache: Nos permite guardar en Memcached el cache de página usando la extensión Memcache para PHP.
- W3 Total Cache: Nos permite guardar en Memcached el cache de página, el cache de objetos, el cache de base de datos y los archivos estáticos minificados. Para ello puede usar tanto la extensión Memcache como la extensión Memcached para PHP.
- EM Object Cache: Nos permite guardar en Memcached el cache de objetos.
- WP-FFPC: Nos permite guardar en Memcached el cache de página usando tanto PHP Memcached como PHP Memcache.
Lamentablemente este tipo de servicios de cache solo son totalmente funcionales y eficientes en servidores VPS o servidores dedicados, ya que aunque en hosting compartido es posible ofrecerlo, realmente su rendimiento deja bastante que desear y no se acerca para nada al rendimiento que puede obtenerse en un servidor VPS o dedicado.
Si necesitas ayuda para implementar Memcached en tu web Wordpress puedes contactar con Raiola Networks y te informaremos sin compromiso.
Memcached para optimizar Prestashop
Prestashop es un gestor de contenidos muy complejo, y por esa razón es necesario utilizar un cache para reducir el consumo de recursos y aumentar la velocidad de carga del sitio web.
Prestashop lleva implementado por defecto un cache en disco que puede llegar a ser bastante ineficiente al leer y escribir datos continuamente en el disco duro, además, puede llegar a ocupar mucho espacio y muchos “inodos”.
Es posible utilizar Memcached para almacenar el cache de Prestashop de forma efectiva, para ello es necesario utilizar la extensión Memcached para PHP.
Si necesitas ayuda para implementar el cache de Prestashop en Memcached puedes contactar con nosotros sin compromiso y te informaremos.
Deja una respuesta
Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *