Optimizar el rendimiento de la base de datos Drupal con Memcache

¿Qué es Memcached?

Memcached es un libre y código abierto distribuido objeto de memoria caché de sistema diseñado para acelerar aplicaciones web dinámicas por aliviar la carga de la base de datos. Permite consultas de bases de datos tradicionalmente costosos (en términos de servidor CPU y RAM) que se tirará desde el servidor Memcached en lugar de la base de datos. 

Si usted está mirando para aumentar el rendimiento y escala de la aplicación web, y usted sabe que el rendimiento de la base de datos lenta (MySQL en mi caso) es el culpable, Memcached es un gran lugar para comenzar. Memcached es utilizado en la web por grande sitios web, como Wikipedia y Facebook. 

Cómo instalar Memcached

No entraré en una gran cantidad de detalles, como otros han cubierto esta bastante bien. Aquí es un gran artículo que es específico para Ubuntu y Drupal.

Tenga en cuenta que si vas a instalar Memcached usted mismo, usted tendrá acceso root/sudo. Si no tienes acceso root, podría ser capaz de preguntar a su anfitrión muy, muy bien para hacer para usted. Sin embargo, la mayoría de hosts serán probablemente sólo permiten Memcached en servidores privados o administrados, así YMMV.

También, si estás instalando Memcached en una máquina distinta de su servidor Web, usted tendrá la capacidad de alterar las reglas de su cortafuegos (o puedes pedir a alguien hacer esto para usted) - más sobre esto más adelante. 

¿Dónde debo instalar Memcached?

Esto depende enormemente de su configuración, conocimientos técnicos y nivel de servicio de hosting. Para la mayor parte pequeño a medianos tamaño sitios experimentando problemas de escalas, si no tienes varios servidores disponibles, pero tienen la capacidad para que Memcached para funcionar, yo diría que eres fino instalación de Memcached en la misma máquina como su servidor Web de choice (Apache en mi caso) - sólo asegúrese de que usted tiene cuidado con la asignación de memoria.

Para EmpowHER.com, utilizamos hosting gestionado con Firehost. Nuestra cuenta tiene múltiples VMs (máquinas virtuales o servidores), que configuración por separado para diferentes tareas. Hemos decidido poner Memcached en una VM separada desde nuestros servidores de web de mayor paralelización. Esto es bueno para un montón de razones - además de mejor rendimiento, también se extiende riesgo un poco. Si Memcached comienza a tener problemas, podemos volcar la caché o reiniciar sin Apache realmente afectados. Otra buena razón que Memcached en su propio servidor es que podría definir contenedores separados para otros sitios web, tanto tiempo como configurar su firewall para permitir que su servidor Web hablar con Memcached, podría teóricamente tienes varios sitios que utilizan el mismo servidor Memcached.

Cómo integrar Drupal con Memcached

Hay dos módulos que se pueden utilizar para integrar Memcached con Drupal. Memcache y Router de caché. Te recomiendo Memcache, razones de que Acquia listas aquí:

  • Memcache es más selectiva sobre caché sacrificio que Router de caché.
  • Memcache almacenará en caché las sesiones de usuario, mientras que no caché de Router.

Para instalar, usar Drush o descargue el zip, instalarlo en la carpeta contrib y permiten a través de la página de módulos. Crack abre el archivo README.txt en la carpeta de Memcache para obtener instrucciones sobre cómo configurar su archivo settings.php.

Una nota sobre cómo configurar su archivo settings.php

Puede tener cualquier número de ubicaciones de caché habilitada para cualquier sitio web dado. La vainilla sistema de caché de Drupal 6 tiene 10 mesas obtiene y establece los datos de, además de los módulos tienen la capacidad de crear sus propias tablas de la caché.

Hay muchas estrategias de configuración de caché diferente y hemos probado varias. No entraré en detalles profundos, que compartir lo que ha estado trabajando grandes para nosotros por más de un año:

<?php
$conf
['cache_inc'] = './sites/all/modules/contrib/memcache/memcache.inc';
$conf['session_inc'] =  './sites/all/modules/contrib/memcache/memcache-session.inc';
$conf['memcache_servers'] = array(
 
'cache:11212' => 'default',
 
'cache:11213' => 'sessions'
);
$conf['memcache_bins'] = array(
 
'session'  => 'sessions',
 
'users'    => 'sessions',
);
?>

 

En pocas palabras, estamos poniendo los usuarios y la caché de sesión (más o menos las cachés que hacen el trabajo pesado la mayoría) en un recipiente y todo lo demás en un recipiente separado.

Si usted está buscando para obtener más información sobre la ejecución de múltiples contenedores de caché de Drupal, vaya aquí.

¿OK, se está ejecutando - derecho yo estoy hecho?

Depende. Si sólo estás utilizando módulos base y contribuí y has visto increíble velocidad aumenta en su sitio, entonces sí. Ir tomar una bebida de su elección y llamar un día. Si has escrito un montón de módulos personalizados como tenemos, entonces aún hay más trabajo por hacer.

Una de las cosas que hace el módulo Memcache es gancho en Drupal core existente cache_get y cache_set() funciones. En vez de ir a la base de datos de objetos en caché, va al servidor Memcached. Sin embargo, su costumbre código (si no fueron muy pensativo y ya están utilizando las funciones de almacenamiento en caché) puede tener un montón de consultas pesadas que están ralentizando su sitio. 

Vas a mirar a través de su base de código de módulo personalizado y buscar oportunidades para tienda/tirar de los datos de la caché en lugar de ir directamente a la DB. Ahorraré algunos ejemplos de código de este para un artículo posterior. 

Para diagnosticar consultas lento, te recomiendo el módulo Devel. En el uso de Devel, encontrará consultas DB en módulos contribuidos que podrían beneficiarse de las mejores prácticas de almacenamiento en caché. Si eres capaz de mejorar un módulo contrib mediante la implementación de almacenamiento en caché, recomiendo ponerse en contacto con el encargado y enviar un parche para el crédito adicional.

Cómo monitorizar Memcached

El módulo Memcache Drupal viene con un módulo secundario llamado Memcache-admin, que incluye un informe de la administración de su estado de caché - pero no soy salvaje sobre ella. 

Utilizamos memcache.php de Harun Yayli - que está basado en el popular script de monitorización APC.php. Incluye su propia autenticación integrada, así que asegúrese de que usted razonablemente seguro nombre de usuario y contraseña antes de poner ese archivo en un entorno de producción.

Eso es todo! Si usted tiene cualquier comentario o pregunta, no dude de dejar un comentario abajo.

Add new comment

Filtered HTML

  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
CAPTCHA
Esta pregunta es para probar si o no usted es un visitante humano y prevenir envíos de spam automatizado.
Imagen CAPTCHA
Ingrese los caracteres mostrados en la imagen.
glqxz9283 sfy39587stf02 mnesdcuix8
sfy39587stf03
sfy39587stf04