Lanzamiento de Memcached 1.6.0 con soporte para almacenamiento externo habilitado

tuvo lugar lanzamiento significativo del sistema de almacenamiento en caché de datos en memoria Memcache 1.6.0, que opera con datos en formato clave/valor y es fácil de usar. Memcached generalmente se usa como una solución liviana para acelerar los sitios de alta carga al almacenar en caché el acceso al DBMS y los datos intermedios. Código suministrado bajo la licencia BSD.

La nueva versión estabiliza la implementación del almacenamiento "extstore“, que ahora está integrado de forma predeterminada (para desactivarlo, el script de configuración proporciona la opción “--disable-extstore”), pero requiere una activación explícita al inicio (las instalaciones antiguas seguirán funcionando sin cambios después de la actualización). Aunque generalmente se considera que extstore es estable, se recomienda precaución al implementarlo en sistemas muy grandes.

Extstore le permite utilizar unidades SSD/Flash para ampliar el tamaño de la caché. Al igual que con la RAM, el almacenamiento Flash no es permanente y se restablece al reiniciar. El alcance del nuevo modo es garantizar el almacenamiento en caché eficiente de datos de gran tamaño. Cuando se utiliza "extstore", las claves y los metadatos se almacenan, como antes, solo en la RAM, pero los datos grandes asociados con las claves, cuyo tamaño excede un umbral establecido, se almacenan en un almacenamiento externo y solo el puntero permanece en la RAM.

Si la clave está asociada con datos pequeños, entonces Memcached funciona como de costumbre, mantiene los datos en la memoria y no accede al almacenamiento externo. Si hay mucha memoria libre, los datos más necesarios se pueden ubicar completamente en el caché de la RAM (por ejemplo, puede especificar que solo los objetos de más de 1024 bytes a los que no se haya accedido durante 3600 segundos se restablezcan a Flash ).

La implementación está optimizada para garantizar el máximo rendimiento y una carga mínima de CPU, a expensas de la eficiencia del almacenamiento (alto nivel de fragmentación). Para prolongar la vida útil de las unidades flash, los datos se almacenan en un búfer y se descargan en el almacenamiento de forma secuencial. Para guardar el estado de la caché entre reinicios, puede utilizar la capacidad que apareció en la versión 1.5.18 para volcar un volcado de caché en un archivo. En el siguiente inicio, puede restaurar el caché desde este archivo para eliminar los picos de carga en los procesadores de contenido debido a que el caché está vacío (el caché se vuelve "caliente" inmediatamente).

El segundo cambio importante en Memcached 1.6 fue la reelaboración del código de comunicación de red, que está adaptado para procesar automáticamente solicitudes por lotes dentro de una única llamada al sistema. Anteriormente, al enviar múltiples comandos GET en un solo paquete TCP, memcached enviaba los resultados con llamadas al sistema separadas. En Memcached 1.6, las respuestas se agregan y se devuelven enviando una única llamada al sistema. Como resultado, ahora hay un promedio de 1.5 claves por llamada al sistema, lo que en las pruebas demuestra una reducción de la carga de la CPU de hasta un 25% y una reducción de la latencia de varios por ciento.

El rediseño del subsistema de red también hizo posible pasar a la asignación dinámica de buffers según fuera necesario, en lugar de asignar buffers estáticamente. Esta optimización redujo el consumo de memoria mientras se esperaban nuevos comandos a través de una conexión establecida por el cliente de 4.5 KB a 400-500 bytes, y también permitió eliminar muchas llamadas a malloc, realloc y free, que provocaban una fragmentación innecesaria de la memoria en Sistemas con un gran número de conexiones. Cada subproceso de trabajo ahora maneja su propio grupo de buffers de lectura y escritura para conexiones de clientes activas. Para ajustar el tamaño de estos buffers
Se proporcionan las opciones “-o resp_obj_mem_limit=N” y “-o read_buf_mem_limt=N”.

La rama 1.6 también anunció la desactivación de protocolo binario interacción con el servidor. El mantenimiento del protocolo binario y la corrección de errores continuarán, pero no se trasladarán nuevas funciones ni actualizaciones de las existentes. Protocolo de texto seguirá desarrollándose sin cambios. El protocolo binario ha sido sustituido por un nuevo protocolo. meta (una versión de texto del protocolo con metacomandos compactos), que demuestra la combinación óptima de rendimiento y confiabilidad. El nuevo protocolo cubre todas las operaciones anteriormente disponibles a través de protocolos binarios y de texto.

Fuente: opennet.ru

Añadir un comentario