Memcached, cache de objetos distribuido en RAM

Por | 2017-01-10T16:17:53+00:00 12/10/2014|Sysadmin|23 Comentarios

En Raiola Networks estamos especializados en la optimización de sitios web, por esa razón estamos habituados a trabajar con sistemas de cache que nos ayudan a mejorar la velocidad de carga de los sitios web y a crear infraestructuras escalables.
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 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.

memcached

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.

memcached

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:

memcached

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:

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:

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:

Y para arrancar el servicio de Memcached (servidor) ejecutamos el siguiente comando:

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:

Con esto Memcached estará instalado, podremos configurar Memcached para arrancar al inicio usando el siguiente comando:

Y arrancamos Memcached utilizando el siguiente comando:

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:

  • Para Debian y derivados:

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:

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:

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:

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:

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.

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.

Puedes descargarte el archivo memcache.php desde AQUÍ.

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.

 

 

About the autor:

Mi nombre es Alvaro Fontela, soy consultor Wordpress y blogger activo desde hace años. Co-Fundador de Raiola Networks, escribiendo sobre Wordpress en este blog día tras día.

Utilizamos cookies propias y de terceros para obtener información estadística, mostrar publicidad personalizada a través del análisis de tu navegación, así como para interactuar en redes sociales. Si continúas navegando, consideramos que aceptas nuestra Política de cookies. ACEPTAR

Aviso de cookies