Recomendaciones

En esta página se explican las recomendaciones para seguir el uso de Memorystore para Memcached.

Prácticas recomendadas de almacenamiento en caché

Diseña tu aplicación para controlar los errores de caché

Debes seguir las prácticas recomendadas de diseño de caché estándar si diseñas tu caché para manejar los errores de caché y la falta de disponibilidad del servicio. Consulta el Acuerdo de Nivel de Servicio para obtener información sobre el compromiso de Memorystore for 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 compatible con tu instancia de Memcached.

Además, si la falta de espacio de almacenamiento es clave, espera y vuelve a intentarlo con la retirada exponencial. Asegúrate de establecer un límite de tiempo después del cual se detendrá la estrategia de reintento.

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 de tu clúster. A fin de obtener instrucciones para configurar la detección automática para tu clúster, consulta Usa el servicio de descubrimiento automático.

Configura correctamente el parámetro max-item-size

En esta sección, se explica cómo configurar mejor el parámetro max-item-size. Para conocer los pasos de ajuste de este parámetro de configuración, consulta Configura instancias de Memcached. Para obtener una lista completa de los parámetros de configuración de Memcached disponibles, consulta Opciones de configuración de Memcached.

Valores predeterminados y valores admitidos

En 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 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 en el que establezcas esta configuración debe ser divisible de 512 KiB de manera uniforme.

Almacena en caché una entrada mayor que el max-item-size configurado

Cuando intentas almacenar en caché una entrada más grande que el max-item-size configurado, Memcached falla la operación y muestra falso. Si es posible, compila lógica en tu aplicación para revelar este error del cliente de Memcached OS a fin de que puedas depurarlo. Intentar almacenar en caché una entrada mayor que el max-item-size configurado puede provocar una latencia alta para tu instancia.

Establece max-item-size como 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 labs y almacenar elementos que son más grandes que el laboratorio llevan a una asignación de memoria ineficiente.

Evita problemas de configuración de max-item-size

Primero, determina el tamaño máximo de elemento que se requiere para la caché. Configura max-item-size para que sea un poco más grande que el tamaño de los elementos más grande, como margen de seguridad.

Ten en cuenta que el tamaño de los valores escritos en la caché puede cambiar en tu aplicación con el tiempo. Además, el clúster se puede configurar de forma incorrecta (por ejemplo, cuando migras de un entorno a otro). Una medida adicional que puedes tomar es validar el tamaño máximo de elementos en tu aplicación a fin de que se rechace la solicitud si la aplicación intenta almacenar elementos en caché más grandes que la configuración configurada.

Cómo balancear un clúster de Memcached

Cómo se producen los clústeres desequilibrados y los riesgos asociados

En raras ocasiones, cuando creas un nodo de instancia de Memcached se puede distribuir de manera desigual entre las zonas de una región. Esto ocurre cuando una zona no está disponible al mismo tiempo que aprovisionas el clúster.

Un clúster desequilibrado aumenta la posibilidad de pérdida de datos, ya que los nodos no se distribuyen de manera uniforme. El clúster no vuelve a balancear de forma automática cuando la zona que no funciona 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, reduce la cantidad de nodos a la cantidad original de nodos. Esta acción de escalamiento vertical y reducción de escala 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 volver a balancear tu clúster depende de la disponibilidad de las zonas en cuestión. Actualmente, 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 balancean de manera 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 para 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/usage_time)

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 la memoria y el uso de la CPU aumentaron con el tiempo hasta más del 80%, es posible que la tendencia continúe. Por lo tanto, es posible que aumente el tamaño de la instancia con anticipación para que la caché tenga espacio para almacenar valores nuevos a medida que aumenten los requisitos de recursos de tu aplicación.

Te recomendamos configurar una alerta para cuando el uso de la memoria y el uso de la CPU alcancen el 80%.

De manera alternativa, el seguimiento de estas métricas a lo largo del tiempo puede indicar que no estás usando todo el espacio y los recursos de CPU que tienes actualmente. En este caso, sería más rentable reducir el tamaño de tu clúster.

¿Qué sigue?