limite pedaço Memcached

votos
4

Porque é que existe um limite pedaço codificado (0,5 meg após a compressão) em memcached ? Alguém recompilados deles para até ele? Eu sei que não deveria estar enviando grandes pedaços como aquele ao redor, mas esses pedaços pesados extras acontecer para mim de vez em quando e causar estragos.

Publicado 07/08/2008 em 22:31
fonte usuário
Em outras línguas...                            


1 respostas

votos
4

Esta questão costumava ser no FAQ oficial

Quais são alguns limites em memcached eu poderia bater? (Wayback Machine)

Citar:

Os limites simples que você provavelmente verá com memcache são os limites principais e itens de tamanho. As chaves são restritas a 250 caracteres. Os dados armazenados não pode exceder 1 megabyte de tamanho, uma vez que é o maior tamanho típico laje ".

O FAQ foi agora revisado e agora existem duas questões distintas que cobrem o seguinte:

Qual é o comprimento da chave maxiumum? (250 bytes)

O tamanho máximo de uma chave é de 250 caracteres. Note que este valor será menor se você estiver usando o cliente "prefixos" ou características semelhantes, uma vez que o prefixo é tacked para a frente da chave original. chaves mais curtas são geralmente melhor, uma vez que economizar memória e usar menos largura de banda.

Por que são itens limitado a 1 megabyte de tamanho?

Ahh, esta é uma pergunta popular!

Resposta curta: Devido à forma como o algoritmo do alocador de memória funciona.

Resposta longa: Motor de armazenamento de memória do Memcached (que será pluggable / ajustados no futuro ...), utiliza uma abordagem lajes de gerenciamento de memória. A memória é dividida em lajes pedaços de tamanhos variados, a partir de um número mínimo e ascendente por um fatorial até o maior valor possível.

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

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

Quanto maior for a placa, mais de um intervalo que existe entre ela e a placa anterior. Assim, quanto maior o valor máximo a menos eficiente do armazenamento de memória é. Memcached também tem pré-alocar alguma memória para cada laje que existe, assim, definir um fatorial menor com um valor máximo maior vai exigir ainda mais sobrecarga.

Lá está outra razão pela qual você não iria querer fazer isso ... Se estamos falando de uma página web e você está tentando armazenar valores / carga tão grande, provavelmente você está fazendo algo errado. Naquele tamanho vai levar uma quantidade considerável de tempo para carregar e descompactar a estrutura de dados na memória, e seu site provavelmente não vai funcionar muito bem.

Se você realmente deseja armazenar itens maiores do que 1 MB, você pode recompilar memcached com uma editado slabs.c:POWER_BLOCKvalor, ou usar o / backend livre ineficiente malloc. Outras sugestões incluem um banco de dados, MogileFS, etc.

Respondeu 08/08/2008 em 18:37
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more