¿Cómo puedo resolver el mensaje de error «comando OOM no permitido» para un nodo de clúster de ElastiCache para Redis?

3 minutos de lectura
0

¿Recibí el error «No se permite el comando OOM cuando se usa una memoria superior a 'maxmemory'» al consultar mi nodo de clúster de Amazon ElastiCache para Redis? ¿Cómo puedo resolver esto?

Descripción breve

Se produce un error de OOM cuando un clúster de ElastiCache para Redis no puede liberar memoria adicional.

ElastiCache para Redis implementa la maxmemory-policy que se establece para el grupo de parámetros del nodo de caché cuando se agota la memoria. El valor predeterminado (volatile-lru) libera memoria al expulsar las claves con un tiempo de caducidad establecido (valor TTL). Cuando un nodo de caché no tiene ninguna clave con un valor TTL, devuelve un error en su lugar.

Para resolver este error y evitar que los clientes reciban los mensajes de error no permitidos del comando OOM, realice una combinación de las siguientes acciones:

  • Defina un valor TTL para las claves de su nodo.
  • Actualice el grupo de parámetros para usar un parámetro maxmemory-policy diferente.
  • Elimine algunas claves existentes manualmente para liberar memoria.
  • Elija un tipo de nodo más grande.

Nota: La combinación exacta de las resoluciones que utilice depende de su caso de uso particular.

Resolución

Establezca un valor TTL para las claves de su nodo

Puede establecer un valor TTL para las claves de su nodo. A continuación, la política de administración de memoria predeterminada de volatile-lru desaloja las claves caducadas para liberar memoria.

Si establece un valor TTL, también puede usar la configuración volatile-ttl. Esta configuración ahorra espacio al expulsar solo las claves con un tiempo de caducidad establecido, empezando por las claves con el TTL más bajo.

Elija una configuración de maxmemory-policy diferente

Defina la política maxmemory-policy para un grupo de parámetros de nodos de caché en uno de los siguientes valores:

  • allkeys-lru: Haga espacio expulsando primero las llaves utilizadas menos recientemente.
  • allkeys-random: Haga espacio expulsando claves aleatorias.
  • volatile-random: Haga espacio expulsando las claves aleatorias con un conjunto de caducidad.

Además, Redis 4.0 ofrece modos de expulsión de uso menos frecuente (LFU):

  • allkeys-lfu: Haga espacio expulsando la clave a la que se accedió el menor número de veces.
  • volatile-lfu: Haga espacio expulsando las claves con un conjunto de fechas de caducidad, empezando por la que se haya accedido menos veces.

Elimine las claves existentes para liberar memoria

Puede eliminar las claves existentes para liberar memoria mediante el comando DEL. Para obtener más información, consulte Del key [key...] en el sitio web redis.io.

Importante: La eliminación de las claves existentes resuelve temporalmente los errores de OOM. Asegúrese también de reconsiderar su estrategia de administración de memoria.

Elija un tipo de nodo más grande

Cada tipo de nodo tiene una cantidad diferente de memoria disponible. No puede modificar la cantidad de memoria disponible en un nodo. Sin embargo, puede utilizar un tipo de nodo más grande con más espacio de almacenamiento.

Importante: El uso de un tipo de nodo más grande resuelve temporalmente los errores de OOM. Asegúrese también de reconsiderar su estrategia de administración de memoria.


Información relacionada

Cambios en los parámetros de Redis 4.0.10

Parámetros específicos del tipo de nodo Redis

Expulsión clave: descripción general de las principales políticas de expulsión de Redis (LRU, LFU, etc.)

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años