En esta página se explican las prácticas recomendadas que debes seguir al usar Memorystore para Memcached.
Diseñar la aplicación para gestionar los fallos de caché
Debes seguir las prácticas recomendadas de diseño de caché estándar y diseñar tu caché para gestionar los fallos de caché y la falta de disponibilidad del servicio. Consulta el Acuerdo de Nivel de Servicio para obtener información sobre el compromiso de tiempo de actividad de Memorystore para Memcached.
Diseña tu aplicación de forma que los fallos 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 no puedes acceder al espacio de claves, espera y vuelve a intentarlo con retroceso exponencial. Asegúrate de definir un límite de tiempo después del cual deje de aplicarse tu estrategia de reintentos.
Conectarse a 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 endpoint de detección automática, pero no es recomendable porque reduce el rendimiento de la aplicación.
Se recomienda el descubrimiento automático
Te recomendamos que uses el servicio de detección automática de Memorystore for Memcached. Este servicio automatiza la gestión de las direcciones IP de los clústeres al añadir o quitar nodos de tu clúster. Para obtener instrucciones sobre cómo configurar el descubrimiento automático en tu clúster, consulta Usar el servicio de descubrimiento automático.
Configurar correctamente el parámetro max-item-size
En esta sección se explica cómo configurar el parámetro max-item-size
de la mejor forma posible. Para ver los pasos que debes seguir para ajustar este parámetro de configuración, consulta Configurar instancias de Memcached.
Para ver la lista completa de parámetros de configuración de Memcached disponibles, consulta Configuraciones de Memcached.
Valores admitidos y valores predeterminados
En el caso de 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 que asigne a esta configuración debe ser divisible entre 512 KiB
.
Almacenar en caché una entrada mayor que el max-item-size
configurado
Cuando intentas almacenar en caché una entrada cuyo tamaño es superior al max-item-size
configurado, Memcached falla en la operación y devuelve el valor false. Si es posible, incluye lógica en tu aplicación para que se muestre este error del cliente OSS de Memcached y puedas depurarlo. Si intentas almacenar en caché una entrada que supere el valor configurado de max-item-size
, la latencia de tu instancia puede ser alta.
Asignar el valor máximo a max-item-size
Puede resolver algunos problemas con el parámetro max-item-size
asignándole el valor máximo. Sin embargo, no es una práctica recomendada, por lo que no debería usar esta estrategia en producción. La gestión de la memoria de Memcached se basa en slabs, y
almacenar elementos que son más grandes que el slab provoca una asignación de memoria ineficiente.
Evitar problemas de configuración de max-item-size
Primero, averigua el tamaño máximo de los elementos que necesita tu caché. Define max-item-size
como un valor ligeramente superior al tamaño del elemento más grande, como margen de seguridad.
Ten en cuenta que el tamaño de los valores escritos en tu caché puede cambiar en tu aplicación con el tiempo. Además, el clúster puede estar mal configurado (por ejemplo, al migrar de un entorno a otro). Otra medida que puedes tomar es validar el tamaño máximo de los elementos en tu aplicación para que la solicitud se rechace si tu aplicación intenta almacenar en caché elementos que superen el ajuste configurado.
Cómo equilibrar un clúster de Memcached desequilibrado
Cómo se producen los clústeres desequilibrados y los riesgos asociados
En algunos casos excepcionales, cuando creas una instancia de Memcached, los nodos se pueden distribuir de forma 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 el riesgo de pérdida de datos, ya que los nodos no están distribuidos de forma tan uniforme como podrían estarlo. El clúster no vuelve a equilibrarse automáticamente cuando la zona que estaba inactiva vuelve a estar online.
Cómo reequilibrar un clúster
Puedes reequilibrar tu clúster aumentando temporalmente el número de nodos y, a continuación, reduciéndolo al número original. Esta acción de escalado vertical permite que el sistema de Memorystore para Memcached redistribuya los nodos de forma uniforme entre las zonas disponibles.
El éxito de este método para reequilibrar el clúster depende de la disponibilidad de las zonas en cuestión. Google Cloud no muestra actualmente las zonas disponibles o no disponibles, por lo que solo puedes saber si una zona está online si los nodos están correctamente equilibrados durante la operación de escalado.
Prácticas recomendadas de Cloud Monitoring
Para hacer un seguimiento del rendimiento de tu caché a lo largo del tiempo, debes usar Cloud Monitoring para monitorizar 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
)
Si monitorizas estas dos métricas a lo largo del tiempo, podrás determinar la eficiencia con la que se usa tu clúster y si deberías aumentar o reducir su tamaño.
Por ejemplo, si las métricas indican que el uso de memoria y CPU ha aumentado con el tiempo hasta superar el 80%, es posible que la tendencia continúe. Por lo tanto, puede aumentar el tamaño de la instancia antes de tiempo para que la caché tenga espacio para almacenar nuevos valores a medida que aumenten los requisitos de recursos de su aplicación.
Te recomendamos que configures una alerta para cuando el uso de memoria y de CPU alcance el 80%.
Por otro lado, monitorizar 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. En este caso, sería más rentable reducir el tamaño del clúster.
Siguientes pasos
- Más información sobre el servicio de descubrimiento automático
- Consulta los parámetros de configuración de Memcached que se pueden modificar.