Come si risolve il messaggio di errore “Comando OOM non consentito” per un nodo cluster ElastiCache per Redis?

3 minuti di lettura
0

Ho ricevuto l'errore “Comando OOM non consentito quando viene utilizzata una memoria maggiore di 'maxmemory'” quando ho eseguito una query sul mio nodo del cluster Amazon ElastiCache per Redis? Come posso risolvere questo problema?

Breve descrizione

Si verifica un errore OOM quando un cluster ElastiCache per Redis non riesce a liberare memoria aggiuntiva.

ElastiCache per Redis implementa la maxmemory-policy impostata per il gruppo di parametri del nodo di cache quando la memoria è esaurita. Il valore predefinito (volatile-lru) libera memoria espellendo le chiavi con un tempo di scadenza impostato (valore TTL). Quando un nodo di cache non dispone di chiavi con un valore TTL, restituisce invece un errore.

Per risolvere questo errore e impedire ai client di ricevere messaggi di errore comando OOM non consentito, esegui una combinazione delle seguenti operazioni:

  • Imposta un valore TTL per le chiavi sul tuo nodo.
  • Aggiorna il gruppo di parametri per utilizzare un parametro maxmemory-policy diverso.
  • Elimina manualmente alcune chiavi esistenti per liberare memoria.
  • Scegli un tipo di nodo più grande.

Nota: l'esatta combinazione delle risoluzioni utilizzate dipende dal caso d'uso specifico.

Soluzione

Imposta un valore TTL per le chiavi sul tuo nodo

È possibile impostare un valore TTL per le chiavi sul tuo nodo. La policy di gestione della memoria predefinita volatile-lru espellerà quindi le chiavi scadute per liberare memoria.

Se imposti un valore TTL, puoi anche utilizzare l'impostazione volatile-ttl. Questa impostazione consente di liberare spazio eliminando solo le chiavi con un tempo di scadenza impostato, a partire da quelle con il TTL più basso.

Scegli un'impostazione maxmemory-policy diversa

Imposta la maxmemory-policy per un gruppo di parametri del nodo di cache su uno dei seguenti valori:

  • allkeys-lru: crea spazio espellendo prima le chiavi usate meno di recente.
  • allkeys-random: crea spazio espellendo le chiavi casuali.
  • volatile-random: crea spazio espellendo le chiavi casuali con una scadenza impostata.

Inoltre, Redis 4.0 offre le modalità di espulsione utilizzate meno frequentemente (LFU):

  • allkeys-lfu: crea spazio espellendo la chiave a cui è stato effettuato il minor numero di accessi.
  • volatiile-lfu: crea spazio espellendo le chiavi con una data di scadenza impostata, iniziando da quella a cui è stato effettuato il minor numero di accessi.

Elimina le chiavi esistenti per liberare memoria

È possibile eliminare le chiavi esistenti per liberare memoria utilizzando il comando DEL. Per ulteriori informazioni, vedere Tasto Del [tasto...] sul sito Web redis.io.

Importante: l'eliminazione delle chiavi esistenti risolve temporaneamente gli errori OOM. Assicurati di riconsiderare anche la tua strategia di gestione della memoria.

Scegli un tipo di nodo più grande

Ogni tipo di nodo ha una quantità diversa di memoria disponibile. Non è possibile modificare la quantità di memoria disponibile su un nodo. Tuttavia, è possibile utilizzare un tipo di nodo più grande con più spazio di archiviazione.

Importante: l'utilizzo di un tipo di nodo più grande risolve temporaneamente gli errori OOM. Assicurati di riconsiderare anche la tua strategia di gestione della memoria.


Informazioni correlate

Modifiche ai parametri Redis 4.0.10

Parametri specifici del tipo di nodo Redis

Espulsione chiavi - Panoramica delle policy di espulsione delle chiavi Redis (LRU, LFU, ecc.)

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa