[elementor-template id="80835"]
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.
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
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.
AutoCultivo
26/02/2017 a las 00:09Como siempre Alvaro te sales con tus tutoriales, excelente aporte, normal nº1 en google.
Quiero editar el archivo con nano /etc/sysconfig/memcached y me dice que el directorio no existe. ¿ con 64mb por defecto? +nginx en vesta me llegará para cachear las paginas con w3 total cache? De momento vá como una bala sirve 4,4 mb de web entre 1.56 y 2.16 segundos.
Tengo configurado para object cache xcache y para page cache el mencached en w3 total cache, además tengo zend opcache como Opcode Cache. ¿ Te parece buena combibación? ¿ o te parece mejor page cache en disco ssd?
Muchisimas gracias.
Responder a AutoCultivo
Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *