Uso de Memcache de manera efectiva con Drupal 7 Multisite

12

Estoy estableciendo un índice de aciertos del 55% en nuestra instancia de memcache (v1.4.4) y me pregunto qué se puede hacer para mejorar el índice de aciertos. Estamos en una configuración multisitio (más de 30 sitios), con dos servidores web con carga equilibrada; hay una instancia de memcached en cada servidor web.

En el settings.php, tengo:

$conf['memcache_servers'] = array(
         '11.22.33.44:11211' => 'default',
         '11.22.33.45:11211' => 'default',
      );
$conf['memcache_bins'] = array('cache' => 'default');
$conf['memcache_key_prefix'] = $_SERVER['SERVER_NAME'];

Estoy mirando el uso de contenedores para mejorar la proporción de aciertos, pero he encontrado algunas sugerencias de que el último módulo de memcache ya lo hace, pero no estoy seguro ya que las instrucciones con el módulo contienen instrucciones sobre cómo configurar contenedores.

Si los contenedores son el camino a seguir, ¿cómo se determina qué (tabla) necesita tener su propio contenedor? Estas son las tablas de caché que tengo en mis sitios:

cache
cache_admin_menu (empty)
cache_block (empty)
cache_bootstrap
cache_field
cache_filter (empty)
cache_form (empty)
cache_image (empty)
cache_media_xml (empty)
cache_menu
cache_page (empty)
cache_path (empty)
cache_token (empty)
cache_update (empty)
cache_views
cache_views_data (empty)
ctools_css_cache (empty)
ctools_object_cache (empty)

Además de los contenedores, ¿qué más puedo hacer para mejorar el uso de Memcached?

¡Muchas gracias!

KM.
fuente
30 + sitios? ¿Podría compartir los detalles del entorno, PHP mem y MySql max_allowed_packet? También estoy planeando lanzar muchos sitios secundarios, ya tengo 4 planes para tener 10, pero no estaba seguro de si Drupal podría manejarlo.
GoodSp33d
@Kantu: quiero mantener este hilo sobre memcached con Drupal. Si publica una nueva pregunta, me complacerá analizarlo ... o consultar discusiones similares aquí o en drupal.org.
KM.
Solo quería conocer las configuraciones de su servidor, ya que ejecutar 30 sitios secundarios es muy raro
GoodSp33d

Respuestas:

13

Después de mucha investigación, esto es lo que ha ayudado a nuestro índice de aciertos y uso de memoria caché:

  • Memcached actualizado a 1.4.10 (la última versión con mejoras de rendimiento)
  • Formato binario habilitado y compresión
  • Utilice el valor predeterminado para contenedores

Nuestro memcached conf en settings.php se parece a esto ahora:

$conf['memcache_bins'] = array('cache' => 'default');
$conf['memcache_options'] = array(
  Memcached::OPT_COMPRESSION => TRUE,
  Memcached::OPT_BINARY_PROTOCOL => TRUE,
  );
$conf['memcache_persistent'] = TRUE;
$conf['memcache_key_prefix'] = $_SERVER['SERVER_NAME'];

Mayores ganancias

La mayor ganancia para nosotros fue habilitar la compresión, aunque la documentación indica que aumenta los ciclos de la CPU. Tenemos 4 CPU asignadas a nuestra VM, y no hemos notado una diferencia. El tiempo para las llamadas memcached fue de ~ 1250ms a ~ 150ms (obtenido de NewRelic) para crear una pieza de contenido (artículo personalizado en nuestro caso).

Proporción de aciertos

Nuestro índice de aciertos es ahora ~ 70%, mucho mejor que el 55% anterior, pero no calla el 90% + que algunos han informado ... la búsqueda continúa (-:

Esperemos que esto ayude a alguien más. Si encuentra otras mejoras o tiene correcciones / sugerencias, publique comentarios o respuestas.

Actualización - Versión del módulo memcahe

Pasamos de la versión 1.0-beta4 a la 1.0 y nuestra proporción de aciertos ahora es del 87%. Tuve que reiniciar memcached ya que la proporción de aciertos no superaba el 70%. Tenemos 64MB asignados a memcached en este momento, por lo que no fue un gran problema para nosotros.

KM.
fuente
1
Establecería el prefijo clave en algo codificado y no dependería del nombre del servidor dado. Por ejemplo, si alguien accede a su sitio con o sin www. (que puede redirigir o algo así, solo un ejemplo), terminará con un prefijo de clave diferente para el caché. Sin embargo, tendrá que cambiar settings.php para cada sitio.
Berdir el
1
Además, la tasa de aciertos depende en gran medida de sus sitios ... si tiene muchas limpiezas de caché explícitas o si memcache se está ejecutando por completo y tiene que tirar cosas regularmente, su tasa de aciertos obviamente disminuirá.
Berdir
Gracias por pesar en @Berdir. He estado revisando las losas y hasta ahora el nombre del servidor como clave no ha sido un problema, pero puedo ver dónde podría estar. Los desalojos son bajos ~ 170 y tienen un 25% (~ 17MB) de espacio en memcached. ¿Hay alguna manera de rastrear la causa de las fallas de caché del 30%? ¿Caché se borra o algo más ...?
KM.
No es fácil. Cuando el caché falla, no puede reproducir lo que sucedió con él. Lo que podría intentar es registrar las llamadas de caché de registro, incluida una traza inversa para ver de dónde provienen, pero no estoy seguro de si eso ayudaría mucho.
Berdir