Usando o Memcache efetivamente com o Drupal 7 Multisite

12

Estou definindo uma taxa de acerto de 55% em nossa instância do memcache (v1.4.4) e estou pensando no que pode ser feito para melhorar a taxa de acerto. Estamos em uma configuração multisite (mais de 30 sites), com dois servidores Web com balanceamento de carga; existe uma instância do memcached em cada servidor da web.

No settings.php, eu tenho:

$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'];

Eu estou olhando para usar caixas para melhorar a taxa de acertos, mas encontrei algumas sugestões de que o módulo memcache mais recente já faz isso, mas não tenho certeza, pois as instruções do módulo contêm instruções sobre a configuração de caixas.

Se as lixeiras estão a caminho, como você determina o que (tabela?) Precisa ter sua própria lixeira? Estas são as tabelas de cache que eu tenho nos meus sites:

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)

Além dos compartimentos, o que mais posso fazer para melhorar o uso do cache de memórias?

Muito Obrigado!

KM.
fonte
Mais de 30 sites? Você poderia compartilhar os detalhes do ambiente, mem do PHP e MySql max_allowed_packet, também estou planejando lançar muitos sub-sites, já tem 4 planos para ter 10, mas não tinha certeza se o drupal poderia lidar com isso.
GoodSp33d
@ Kantu - Eu quero manter esse tópico sobre o memcached com o Drupal. Se você postar uma nova pergunta, ficarei feliz em comentar ... ou conferir discussões semelhantes aqui ou no drupal.org.
KM.
Eu só queria saber suas configurações de servidor, como a execução de 30 sub sites é muito raro
GoodSp33d

Respostas:

13

Após muita pesquisa, eis o que ajudou a nossa taxa de acertos e o uso do cache de memc:

  • Memcached atualizado para 1.4.10 (a versão mais recente com aprimoramentos de desempenho)
  • Formato binário e compactação ativados
  • Use o padrão para compartimentos

Nosso conf memcached em settings.php se parece com isso agora:

$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'];

Maiores ganhos

O maior ganho para nós foi permitir a compactação, mesmo que a documentação afirme que aumenta os ciclos da CPU. Temos 4 CPUs alocadas em nossa VM e não notamos diferença. O tempo para chamadas armazenadas em cache passou de ~ 1250ms para ~ 150ms (obtido da NewRelic) para a criação de um conteúdo (artigo personalizado no nosso caso).

Taxa de acerto

Nossa taxa de acerto agora é de ~ 70% - muito melhor que 55% antes, mas não diminui os 90% + que alguns relataram ... a missão continua (-:

Espero que isso ajude outra pessoa. Se você encontrar outras melhorias ou tiver correções / sugestões, poste comentários ou respostas.

Atualização - Versão do módulo memcahe

Passamos da versão 1.0-beta4 para 1.0 e nossa taxa de acertos agora é de 87%. Eu tive que reiniciar o memcached porque a taxa de acertos não passava de 70%. Temos 64 MB alocados para memcached no momento, então isso não foi um grande problema para nós.

KM.
fonte
1
Eu definiria o prefixo da chave para algo codificado permanentemente e não dependeria do nome do servidor especificado. Por exemplo, se alguém acessa seu site com ou sem www. (que você pode redirecionar ou algo assim, apenas um exemplo), você terá um prefixo de chave diferente para o cache. Você terá que alterar o settings.php para cada site, no entanto.
Berdir
1
Além disso, a taxa de acertos depende muito de seus sites. Se você tiver muitas limpezas de cache explícitas ou se o memcache estiver cheio e precisar jogar fora regularmente as coisas, sua taxa de acertos obviamente cairá.
Berdir
Obrigado por pesar no @Berdir. Estive verificando as lajes e até agora o nome do servidor como chave não foi um problema, mas posso ver onde poderia estar. As remoções são baixas ~ 170 e têm 25% (~ 17MB) de espaço restante no memcached. Existe uma maneira de rastrear a causa das falhas de cache de 30%? O cache limpa ou algo mais ...?
KM.
Não facilmente. Quando o cache falha, você não pode reproduzir o que aconteceu com ele. O que você pode tentar é limpar as chamadas do cache de log, incluindo um backtrace para ver de onde elas vêm, mas não tenho certeza se isso ajudaria muito.
Berdir 10/04/12