Pregunta

¿Por qué hay un límite de fragmentos codificado (0,5 megas después de la compresión) en memcached?¿Alguien ha vuelto a compilar el suyo para mejorarlo?Sé que no debería enviar trozos grandes como ese, pero estos trozos extra pesados ​​me ocurren de vez en cuando y causan estragos.

¿Fue útil?

Solución

Esta pregunta solía estar en el Preguntas frecuentes oficiales

¿Cuáles son algunos de los límites que podría alcanzar en Memcached?(Máquina de Wayback)

Citar:

Los límites simples que probablemente verá con Memcache son la clave y los límites del tamaño del elemento.Las claves están restringidas a 250 caracteres.Los datos almacenados no pueden exceder el tamaño de 1 megabyte, ya que ese es el tamaño de losa típico más grande ".

Las preguntas frecuentes ahora se han revisado y ahora hay dos preguntas separadas que cubren esto:

¿Cuál es la longitud máxima de la clave?(250 bytes)

El tamaño máximo de una clave es de 250 caracteres.Tenga en cuenta que este valor será menor si está utilizando "prefijos" del cliente o características similares, ya que el prefijo está agregado en la parte delantera de la tecla original.Las teclas más cortas son generalmente mejores, ya que guardan memoria y usan menos ancho de banda.

¿Por qué los artículos tienen un tamaño limitado a 1 megabyte?

¡Ahh, esta es una pregunta popular!

Respuesta corta:Por cómo funciona el algoritmo del asignador de memoria.

Respuesta larga:El motor de almacenamiento de memoria de Memcached (que será conectable/ajustado en el futuro ...), utiliza un enfoque de losas para la gestión de la memoria.La memoria se divide en trozos de tamaños variables, comenzando en un número mínimo y ascendiendo por un factorial hasta el mayor valor posible.

Digamos que el valor mínimo es de 400 bytes, y el valor máximo es de 1 megabyte, y el factorial es 1.20:

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

Cuanto más grande es la losa, más brecha hay entre ella y la losa anterior.Entonces, cuanto mayor sea el valor máximo, menos eficiente es el almacenamiento de memoria.Memcached también tiene que prefirmar algo de memoria para cada losa que existe, por lo que establecer un factorial más pequeño con un valor máximo más grande requerirá aún más gastos generales.

Hay otra razón por la que no querrías hacer eso...Si estamos hablando de una página web e intenta almacenar/cargar valores tan grandes, probablemente esté haciendo algo mal.En ese tamaño, tomará una cantidad notable de tiempo cargar y desempacar la estructura de datos en la memoria, y es probable que su sitio no funcione muy bien.

Si realmente desea almacenar artículos de más de 1 MB, puede recompilar Memcached con un editado slabs.c:POWER_BLOCK valor, o use el ineficiente backend malloc/libre.Otras sugerencias incluyen una base de datos, Mogilefs, etc.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top