Pergunta

Por que existe um limite de blocos codificados (0,5 mega após a compactação) em memcached?Alguém recompilou o deles para aumentá-lo?Eu sei que não deveria enviar pedaços grandes como esses, mas esses pedaços extras pesados ​​acontecem comigo de vez em quando e causam estragos.

Foi útil?

Solução

Esta questão costumava estar no perguntas frequentes oficiais

Quais são alguns limites do memcached que posso atingir?(Máquina Wayback)

Citar:

Os limites simples que você provavelmente verá com o Memcache são os limites da chave e do tamanho do item.As chaves são restritas a 250 caracteres.Os dados armazenados não podem exceder 1 megabyte de tamanho, pois esse é o maior tamanho de laje típico ".

O FAQ foi revisado e agora existem duas questões separadas cobrindo isso:

Qual é o comprimento máximo da chave?(250 bytes)

O tamanho máximo de uma chave é de 250 caracteres.Observe que esse valor será menor se você estiver usando "prefixos" do cliente ou recursos semelhantes, pois o prefixo é preso na frente da chave original.As teclas mais curtas geralmente são melhores, pois economizam memória e usam menos largura de banda.

Por que os itens têm tamanho limitado a 1 megabyte?

Ahh, esta é uma pergunta popular!

Resposta curta:Por causa de como funciona o algoritmo do alocador de memória.

Resposta longa:O mecanismo de armazenamento de memória do Memcached (que será flashable/ajustado no futuro ...), usa uma abordagem de lajes para o gerenciamento da memória.A memória é dividida em pedaços de tamanhos variados, começando com um número mínimo e ascendendo por um fatorial até o maior valor possível.

Digamos que o valor mínimo seja de 400 bytes e o valor máximo é de 1 megabyte, e o fatorial é 1,20:

placa 1 - 400 bytes placa 2 - 480 bytes placa 3 - 576 bytes ...etc.

Quanto maior a laje, mais uma lacuna existe entre ela e a laje anterior.Quanto maior o valor máximo, menos eficiente será o armazenamento de memória.O Memcached também precisa pré-allocar alguma memória para cada laje que existe, portanto, definir uma fatorial menor com um valor máximo maior exigirá ainda mais sobrecarga.

Há outra razão pela qual você não gostaria de fazer isso ...Se estamos falando de uma página da web e você está tentando armazenar/carregar valores tão grandes, você provavelmente está fazendo algo errado.Nesse tamanho, levará uma quantidade notável de tempo para carregar e descompactar a estrutura de dados na memória, e seu site provavelmente não terá um desempenho muito bom.

Se você realmente deseja armazenar itens maiores que 1 MB, pode recompensar o Memcached com um editado slabs.c:POWER_BLOCK valor ou use o back -end ineficiente MALLOC/GRATUITO.Outras sugestões incluem um banco de dados, Mogilefs, etc.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top