Recomendaciones

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é

Si quieres seguir las prácticas recomendadas de diseño de caché, debes diseñar tu caché para controlar 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 para Memcached para el tiempo de actividad.

Diseña tu aplicación para que los errores de caché y el tiempo de inactividad temporal del servicio no impida que tu aplicación recupere datos de la base de datos subyacente que admite tu instancia de Memcached.

Además, si la disponibilidad de la clave no es relevante, espere un momento y vuelva a intentarlo con una retirada exponencial. Asegúrate de definir un límite de tiempo después de que se detenga la estrategia de reintento.

Conéctate a los nodos de Memcached

Cuando consultes nodos de Memcached con comandos como set, get y delete, debes conectarte directamente a las direcciones IP de los nodos. Es posible ejecutar estos comandos en el extremo de detección automática, aunque esto no se recomienda porque genera un rendimiento menor en la aplicación.

Te recomendamos que uses el servicio de descubrimiento automático de Memorystore para Memcached. Este servicio automatiza la administración de la dirección IP del clúster cuando agregas o quitas nodos del clúster. A fin de obtener instrucciones para configurar la detección automática para tu clúster, consulta Usa el servicio de detección automática.

Configura el parámetro max-item-size de forma correcta

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

Valores predeterminados y valores admitidos

Para Memcached de código abierto, el valor mínimo para max-item-size es 1KiB, el valor máximo es 1 GiB y el valor predeterminado es 1 MiB. El valor mínimo de Memorystore para Memcached 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 por 512 KiB de manera uniforme.

Almacena en caché una entrada mayor que la max-item-size configurada

Cuando intentas almacenar en caché una entrada mayor que la max-item-size configurada, Memcached falla la operación y muestra false. Si es posible, agrega lógica a tu aplicación para que muestre este error del cliente de OSS de Memcached a fin de que puedas depurarlo. Intentar almacenar en caché una entrada mayor que la max-item-size configurada puede generar una latencia alta para tu instancia.

Configura 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.

Evitando 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 mayor que el tamaño del elemento más grande, como un 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 puede estar mal configurado (por ejemplo, cuando se migra de un entorno a otro). Otra medida que puedes tomar es validar el tamaño máximo del elemento en tu aplicación, de modo que se rechace la solicitud 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 circunstancias excepcionales, cuando creas un nodo de una instancia de Memcached se puede distribuir de manera desigual entre zonas en una región. Esto sucede 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 se distribuyen de manera uniforme como podrían. El clúster no vuelve a balancear automáticamente cuando la zona que estaba inactiva se vuelve a conectar.

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 volver a balancear 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 balancean 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/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 paso del tiempo, es posible que la tendencia continúe. Como resultado, puedes aumentar el tamaño de la instancia de forma anticipada a fin de que tu 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 memoria y el uso de CPU lleguen al 80%.

De manera 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?