Como resolvo a mensagem de erro “O Comando OOM não é permitido” para um nó de cluster do ElastiCache para Redis?

3 minuto de leitura
0

Recebi o erro “O comando OOM não é permitido quando utilizada uma memória maior que ‘maxmemory’” ao consultar meu nó de cluster do Amazon ElastiCache para Redis? Como faço para resolver isso?

Breve descrição

Um erro de OOM ocorre quando um cluster do ElastiCache para Redis não consegue liberar memória adicional.

O ElastiCache para Redis implementa a maxmemory-policy que é definida para o grupo de parâmetros do nó de cache quando está sem memória. O valor padrão (volatile-lru) libera memória ao remover chaves com um tempo de expiração definido (valor TTL). Quando um nó de cache não tem nenhuma chave com um valor TTL, ele retorna um erro.

Para resolver esse erro e impedir que os clientes recebam mensagens de erro comando OOM não permitido, faça uma combinação do seguinte:

  • Defina um valor TTL para as chaves em seu nó.
  • Atualize o grupo de parâmetros para usar um parâmetro maxmemory-policy diferente.
  • Exclua algumas chaves existentes manualmente para liberar memória.
  • Escolha um tipo de nó maior.

Observação: a combinação exata das resoluções que você usa depende do seu caso de uso específico.

Resolução

Defina um valor TTL para chaves em seu nó

Você pode definir um valor TTL para chaves em seu nó. A política padrão de gerenciamento de memória volatile-lru excluirá as chaves expiradas para liberar memória.

Se você definir um valor TTL, também poderá usar a configuração volatile-ttl. Essa configuração abre espaço removendo somente as chaves com um tempo de expiração definido, começando pelas chaves com o TTL mais baixo.

Escolha uma configuração diferente de maxmemory-policy

Defina a maxmemory-policy para um grupo de parâmetros de nós de cache com um dos seguintes valores:

  • allkeys-lru: libere espaço removendo primeiro as chaves usadas menos recentemente.
  • allkeys-random: libere espaço removendo chaves aleatórias.
  • volatile-random: libere espaço removendo chaves aleatórias com um prazo de validade definido.

Além disso, o Redis 4.0 oferece modos de remoção usados com menos frequência (LFU):

  • allkeys-lfu: libere espaço removendo a chave que foi acessada o menor número de vezes.
  • volatile-lfu: libere espaço removendo as chaves com um prazo de validade definido, começando pela que foi acessada o menor número de vezes.

Exclua as chaves existentes para liberar memória

Você pode excluir as chaves existentes para liberar memória usando o comando DEL. Para obter mais informações, consulte Chave del [chave...] no site redis.io.

Importante: a exclusão das chaves existentes resolve temporariamente os erros OOM. Certifique-se também de reconsiderar sua estratégia de gerenciamento de memória.

Escolha um tipo de nó maior

Cada tipo de nó tem uma quantidade diferente de memória disponível. Você não pode modificar a quantidade de memória disponível em um nó. No entanto, você pode usar um tipo de nó maior com mais armazenamento.

Importante: usar um tipo de nó maior resolve temporariamente os erros OOM. Certifique-se também de reconsiderar sua estratégia de gerenciamento de memória.


Informações relacionadas

Mudanças nos parâmetros do Redis 4.0.10

Parâmetros específicos do tipo de nó do Redis

Remoção de chaves - Visão geral das principais políticas de remoção do Redis (LRU, LFU etc.)

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos