En esta página, se explican las prácticas recomendadas a seguir cuando se usa Memorystore para Memcached.
Diseña tu aplicación para controlar los errores de caché
Debes seguir las prácticas recomendadas estándar de diseño de caché. Para ello, debes diseñar tu caché de modo que controle los errores de caché y la falta de disponibilidad del servicio. Consulta el Acuerdo de Nivel de Servicio a fin de obtener información sobre el compromiso de Memorystore para Memcached con el tiempo de actividad.
Diseña tu aplicación para que los errores de caché y el tiempo de inactividad temporal del servicio no impidan que tu aplicación recupere datos de la base de datos subyacente que admite tu instancia de Memcached.
Además, si el espacio de claves no está disponible, espera y vuelve a intentar con la retirada exponencial. Asegúrate de establecer un límite de tiempo después del cual cesará la estrategia de reintentos.
Conéctate a nodos de Memcached
Cuando consultas nodos de Memcached con comandos como set
, get
y delete
, debes conectarte a las direcciones IP de los nodos directamente. Es posible ejecutar estos comandos en el extremo de descubrimiento automático. Sin embargo, esto no se recomienda, ya que genera un rendimiento reducido para tu aplicación.
Descubrimiento automático recomendado
Te recomendamos que uses el servicio Auto Discovery de Memorystore para Memcached. Este servicio automatiza la administración de direcciones IP del clúster cuando se agregan o quitan nodos en el clúster. Para obtener instrucciones sobre cómo configurar el descubrimiento automático en tu clúster, consulta Usa el servicio de descubrimiento automático.
Cómo configurar correctamente el parámetro max-item-size
En esta sección, se explica la mejor manera de configurar el parámetro max-item-size
. Si deseas ver los pasos para ajustar este parámetro de configuración, consulta Cómo configurar instancias de Memcached.
Para ver la lista completa de los parámetros de configuración de Memcached disponibles, consulta Configuraciones de Memcached.
Valores predeterminados y valores admitidos
Para Memcached de código abierto, el valor mínimo de max-item-size
es 1KiB
, el valor máximo es 1 GiB
y el valor predeterminado es 1 MiB
. En el caso de Memorystore para Memcached, el valor mínimo es 512 KiB
, el valor máximo es 128
MiB
y el valor predeterminado es 1 MiB
. Además, cualquier valor para el que establezcas esta configuración debe ser divisible de manera uniforme por 512 KiB
.
Almacena en caché una entrada más grande que la max-item-size
configurada
Cuando intentas almacenar en caché una entrada más grande que el max-item-size
configurado, Memcached falla la operación y muestra un resultado falso. Si es posible, compila lógica en tu aplicación para mostrar este error del cliente de OSS de Memcached a fin de que puedas depurarlo. Si intentas almacenar en caché una entrada más grande que la max-item-size
configurada, es posible que tu instancia tenga una latencia alta.
Estableciendo max-item-size
en el valor máximo
Puedes resolver algunos problemas con el parámetro max-item-size
si lo configuras con el valor máximo. Sin embargo, esta no es una buena práctica, por lo que no debes usar esta estrategia en producción. La administración de la memoria de Memcached se basa en bloques, y almacenar elementos que son más grandes que el bloque llevan a una asignación de memoria ineficiente.
Evita problemas de configuración de max-item-size
Primero, determina qué tamaño máximo de elemento se requiere para tu caché. Configura max-item-size
para que sea un poco más grande que el tamaño del elemento más grande, como margen de seguridad.
Ten en cuenta que el tamaño de los valores escritos en la caché puede cambiar en la aplicación con el tiempo. Además, el clúster puede tener una configuración incorrecta (por ejemplo, cuando se migra de un entorno a otro). Una medida adicional que puedes tomar es validar el tamaño máximo de elemento en tu aplicación, de modo que la solicitud sea rechazada si tu aplicación intenta almacenar en caché elementos más grandes que la configuración configurada.
Cómo balancear un clúster de Memcached desbalanceado
Cómo se producen los clústeres desbalanceados y los riesgos asociados
En muy pocas circunstancias, cuando creas una instancia de Memcached, los nodos pueden distribuirse de manera desigual entre zonas de una región. Esto ocurre cuando una zona no está disponible en el mismo momento en que aprovisionas el clúster.
Un clúster desequilibrado aumenta el potencial de pérdida de datos porque los nodos no están distribuidos de manera uniforme como podrían. El clúster no se vuelve a balancear de forma automática cuando la zona que estaba inactiva vuelve a estar en línea.
Cómo volver a balancear tu clúster
Puedes volver a balancear tu clúster aumentando de forma temporal la cantidad de nodos en tu clúster y, luego, escala horizontalmente nodos a la cantidad original de nodos. Esta acción de escalamiento vertical y horizontal permite que el sistema Memorystore para Memcached vuelva a distribuir los nodos de manera uniforme en las zonas disponibles.
El éxito de este método para rebalancear tu clúster depende de la disponibilidad de las zonas en cuestión. En la actualidad, Google Cloud no muestra las zonas disponibles o no disponibles, por lo que solo puedes saber si la zona está en línea si los nodos se balancearon de forma correcta durante la operación de escalamiento.
Prácticas recomendadas de Cloud Monitoring
Si quieres realizar un seguimiento del rendimiento de tu caché a lo largo del tiempo, debes usar Cloud Monitoring con el fin de supervisar algunas métricas esenciales de Memorystore para Memcached:
- Uso de memoria (
memcache.googleapis.com/node/cache_memory
) - Porcentaje de uso de CPU (
memcache.googleapis.com/node/cpu/utilization
)
Hacer un seguimiento de estas dos métricas a lo largo del tiempo te permite determinar con cuánta eficiencia se usa tu clúster, y si debes considerar aumentar o disminuir su tamaño.
Por ejemplo, si las métricas indican que el uso de memoria y de CPU aumentó con el tiempo a más del 80%, es posible que la tendencia continúe. Como resultado, puedes aumentar el tamaño de la instancia de manera anticipada a fin de que la caché tenga espacio para almacenar valores nuevos a medida que aumentan los requisitos de recursos de la aplicación.
Te recomendamos que configures una alerta para cuando el uso de memoria y de CPU alcancen el 80%.
Como alternativa, el seguimiento de estas métricas a lo largo del tiempo puede indicar que no usas todos los recursos de espacio y CPU que tienes actualmente. En este caso, sería más rentable disminuir el tamaño de tu clúster.
¿Qué sigue?
- Obtén más información sobre el servicio Descubrimiento automático.
- Revisa los parámetros de configuración de Memcached modificables.