Estratégia de escala do Memcached

5

Atualmente estou executando um ambiente de produção com 4 servidores memcached dedicados, cada um deles com 48Gb de RAM (42 dedicados ao memcache). Agora eles estão indo bem, mas o tráfego e o conteúdo estão crescendo e certamente também crescerão no ano que vem.

Quais são seus pensamentos sobre estratégias para escalar ainda mais o memcached? Como você fez até agora:

Você adiciona mais RAM às caixas até a capacidade total delas - efetivamente duplicando o pool de cache no mesmo número de caixas? Ou você dimensiona horizontalmente adicionando mais das mesmas caixas, com a mesma quantidade de RAM.

As caixas atuais podem seguramente lidar com mais RAM já que a carga do seu processador é bastante baixa, o único gargalo sendo a memória, mas eu me pergunto se não seria uma estratégia melhor distribuir o cache, tornando as coisas mais redundantes e minimizando o impacto no cache de perder uma caixa (perdendo 48Gb de cache versus perdendo 96Gb). Como você (ou você) lidaria com essa decisão?

    
por danakim 29.09.2011 / 12:33

2 respostas

1

Eu quero saber o que você está movendo e que consome mais de 100 GB de memória sem sobrecarregar seus NICs.

O Memcache é dimensionado de forma razoavelmente linear entre as máquinas, então as perguntas que você deve fazer são:

  • Meu barramento de sistema está saturado atualmente?
    • Isso pode não estar relacionado ao uso da CPU. As transferências de DMA não serão exibidas dessa maneira
  • Quão cara é a memória de alta densidade versus uma nova caixa contendo o aumento da quantidade de memória?
    • Custo total do espaço em rack, consumo de energia, etc.
  • Você vê uma diferença fundamental entre perder 25% do seu cache 1% do tempo e 12,5% do seu cache 2% do tempo? (Taxa de falha escolhida aleatoriamente).

A escala é de 10% de intuição, 70% de medição e adaptação, e 20% de voltar e tentar outra coisa.

Carregue-os até que eles maximizem o elo mais fraco ou parem de ser econômicos. Eles podem ou não já estar lá.

    
por 02.10.2011 / 04:37
2

Quando eu faço isso, geralmente há um ponto de equilíbrio entre o tamanho da caixa de ponto (custo de espaço de rack), a despesa de chips de alta densidade e o gerenciamento de cenário de falha. Isso quase sempre termina com uma configuração menor do que a densidade máxima de memória (e também normalmente não os chips mais rápidos disponíveis), o que, como você mencionou, melhora o impacto da falha do nó e geralmente os torna mais econômicos. Alguns custos / coisas a considerar ao fazer essa escolha:

  • custo do nó (cpu / mem / etc)
  • custo do espaço em rack
  • sobrecarga administrativa / custo
  • cenários de falha (você está tentando fazer N + 1?)

Eu também fiz upgrades para maximizar as caixas à medida que você cresce clusters também (geralmente quando elas são bem pequenas), pois pode ser significativamente mais barato a curto prazo para comprar mais memória à medida que você aumenta o tempo tomar decisões arquitetônicas maiores.

    
por 02.10.2011 / 03:42