Assicurarsi di disporre di memoria sufficiente per creare un'istantanea Valkey o Redis OSS - Amazon ElastiCache

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Assicurarsi di disporre di memoria sufficiente per creare un'istantanea Valkey o Redis OSS

Istantanee e sincronizzazioni in Valkey 7.2 e versioni successive e Redis versione 2.8.22 e successive OSS

Valkey offre il supporto predefinito per istantanee e sincronizzazioni. Redis OSS 2.8.22 introduce un processo di salvataggio senza forkless che consente di allocare più memoria all'uso dell'applicazione senza incorrere in un maggiore utilizzo dello swap durante le sincronizzazioni e i salvataggi. Per ulteriori informazioni, consulta Modalità di implementazione di sincronizzazione e backup.

Istantanee e sincronizzazioni Redis precedenti alla versione OSS 2.8.22

Quando lavori con ElastiCache (RedisOSS), Redis OSS chiama un comando di scrittura in background in diversi casi:

  • Durante la creazione di uno snapshot per un backup.

  • Durante la sincronizzazione delle repliche con il nodo principale in un gruppo di repliche

  • Quando si abilita la funzione append-only file () AOF per Redis. OSS

  • Durante la promozione di una replica a primaria (che causa una sincronizzazione tra nodi principali/replica).

Ogni volta che Redis OSS esegue un processo di scrittura in background, è necessario disporre di memoria disponibile sufficiente per far fronte al sovraccarico del processo. La mancanza di memoria sufficiente provoca un errore del processo. Per questo motivo, è importante scegliere un tipo di istanza di nodo con memoria sufficiente durante la creazione del cluster Redis. OSS

Processo di scrittura in background e utilizzo della memoria con Valkey e Redis OSS

Ogni volta che viene chiamato un processo di scrittura in background, Valkey e Redis ne eseguono un OSS fork (ricordate che questi motori sono a thread singolo). Un fork mantiene i dati su disco in un file snapshot Redis .rdb. OSS Tutti gli altri servizi fork eseguono operazioni di lettura e scrittura. Per garantire che l'istantanea sia un' point-in-timeistantanea, tutti gli aggiornamenti e le aggiunte ai dati vengono scritti in un'area di memoria disponibile separata dall'area dati.

Finché è disponibile memoria sufficiente per registrare tutte le operazioni di scrittura mentre i dati vengono resi persistenti sul disco, non si dovrebbero avere problemi di memoria insufficiente. Potresti riscontrare problemi di memoria insufficiente qualora si verifichi uno dei seguenti casi:

  • L'applicazione esegue molte operazioni di scrittura e richiede pertanto un'elevata quantità di memoria disponibile per accettare dati nuovi o aggiornati.

  • Hai a disposizione una quantità di memoria veramente limitata in cui scrivere dati nuovi o aggiornati.

  • Il set di dati di cui disponi è di grandi dimensioni. Poiché per essere reso persistente sul disco è necessario molto tempo, sono necessarie numerose operazioni di scrittura.

Il diagramma seguente illustra l'utilizzo della memoria durante l'esecuzione di un processo di scrittura in background.

Immagine. Diagramma dell'utilizzo della memoria durante una scrittura in background.

Per informazioni sull'impatto di un backup sulle prestazioni, consulta Impatto sulle prestazioni dei backup di cluster progettati autonomamente.

Per ulteriori informazioni su come Valkey e Redis OSS eseguono le istantanee, consulta http://valkey.io.

Per ulteriori informazioni sulle regioni e sulle zone di disponibilità, consulta Scelta delle regioni e delle zone di disponibilità per ElastiCache.

Come evitare di esaurire la memoria durante l'esecuzione di una scrittura in background

Ogni volta che BGREWRITEAOF viene chiamato un processo di scrittura in background come BGSAVE o, per evitare che il processo abbia esito negativo, è necessario disporre di più memoria di quella che verrà consumata dalle operazioni di scrittura durante il processo. Lo scenario peggiore è che durante l'operazione di scrittura in background ogni record venga aggiornato e alcuni nuovi record vengano aggiunti alla cache. Per questo motivo, si consiglia di impostare su 50 (50 percento) per OSS le versioni Redis precedenti reserved-memory-percent alla 2.8.22 o su 25 (25 percento) per Valkey e tutte le versioni Redis 2.8.22 e successive. OSS

Il valore maxmemory indica la memoria che hai a disposizione per i dati e il sovraccarico operativo. Poiché non puoi modificare il parametro reserved-memory nel gruppo di parametri di default, devi creare un gruppo di parametri personalizzato per il cluster. Il valore predefinito per reserved-memory è 0, che consente OSS a Redis di consumare tutta la memoria massima con i dati, lasciando potenzialmente troppo poca memoria per altri usi, come un processo di scrittura in background. Per i valori di maxmemory per tipo di istanza del nodo, consulta Parametri specifici del tipo di nodo Redis OSS.

È inoltre possibile utilizzare il reserved-memory parametro per ridurre la quantità di memoria utilizzata sulla confezione.

Per ulteriori informazioni sui parametri specifici di Valkey e Redis in, vedere. ElastiCache Parametri Valkey e Redis OSS

Per informazioni sulla creazione e sulla modifica di gruppi di parametri, consulta Creazione di un gruppo di ElastiCache parametri e Modifica di un gruppo di ElastiCache parametri.