Gestione della memoria prenotata - Amazon ElastiCache (sistema operativo Redis)

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à.

Gestione della memoria prenotata

La memoria prenotata è la memoria destinata all'utilizzo diverso dai dati. Quando si esegue un backup o un failover, Redis OSS utilizza la memoria disponibile per registrare le operazioni di scrittura sul cluster mentre i dati del cluster vengono scritti nel file.rdb. Se non disponi di memoria sufficiente per tutte le scritture, il processo non va a buon fine. Di seguito, è possibile trovare informazioni sulle opzioni per la gestione della memoria riservata ElastiCache per Redis OSS e su come applicarle.

Qual è la quantità di memoria prenotata necessaria?

Se utilizzi una versione di Redis OSS precedente alla 2.8.22, riserva più memoria per i backup e i failover rispetto a Redis OSS 2.8.22 o successiva. Questo requisito è dovuto ai diversi modi in cui Redis OSS implementa il processo di backup. ElastiCache La regola generale consiste nel riservare metà del maxmemory valore di un tipo di nodo all'overhead Redis OSS per le versioni precedenti alla 2.8.22 e un quarto per le versioni Redis OSS 2.8.22 e successive.

A causa delle diverse modalità di ElastiCache implementazione del processo di backup e replica, la regola generale consiste nel riservare il 25% del valore di un tipo di nodo utilizzando il parametro. maxmemory reserved-memory-percent Questo è il valore predefinito e consigliato nella maggior parte dei casi.

Quando i tipi di istanze micro e piccole istanze burstable funzionano vicino maxmemory ai limiti, è possibile che si verifichi l'utilizzo dello swap. Per migliorare l'affidabilità operativa di questi tipi di istanze durante il backup, la replica e il traffico elevato, consigliamo di aumentare il valore del reserved-memory-percent parametro fino al 30% sui tipi di istanze di piccole dimensioni e fino al 50% sui tipi di micro istanze.

Per carichi di lavoro impegnativi in scrittura su ElastiCache cluster con suddivisione dei dati su più livelli, consigliamo di aumentare la memoria disponibile del nodo fino reserved-memory-percent al 50%.

Per ulteriori informazioni, consulta gli argomenti seguenti:

Parametri per gestire memoria prenotata

A partire dal 16 marzo 2017, Amazon ElastiCache (Redis OSS) fornisce due parametri che si escludono a vicenda per la gestione della memoria Redis OSS e. reserved-memory reserved-memory-percent Nessuno di questi parametri fa parte della distribuzione Redis OSS.

A seconda di quando sei diventato ElastiCache cliente, l'uno o l'altro di questi parametri è il parametro di gestione della memoria predefinito. Questo parametro si applica quando si crea un nuovo cluster o gruppo di replica Redis OSS e si utilizza un gruppo di parametri predefinito.

  • Per i clienti che hanno iniziato prima del 16 marzo 2017: quando si crea un cluster o un gruppo di replica Redis OSS utilizzando il gruppo di parametri predefinito, il parametro di gestione della memoria è. reserved-memory In questo caso, zero (0) byte di memoria sono riservati.

  • Per i clienti che hanno iniziato il 16 marzo 2017 o dopo tale data: quando si crea un cluster o un gruppo di replica Redis OSS utilizzando il gruppo di parametri predefinito, il parametro di gestione della memoria è. reserved-memory-percent In questo caso, il 25% del valore maxmemory del nodo è riservato per scopi non dati.

Dopo aver letto i due parametri di gestione della memoria Redis OSS, potresti preferire utilizzare quello che non è quello predefinito o con valori non predefiniti. In questo caso, puoi passare all'altro parametro di gestione della memoria prenotata.

Per modificare il valore di tale parametro, è possibile creare un gruppo di parametri personalizzato e modificarlo in modo da utilizzare il parametro e il valore di gestione della memoria preferiti. È quindi possibile utilizzare il gruppo di parametri personalizzato ogni volta che si crea un nuovo cluster o gruppo di replica Redis OSS. Per cluster o gruppi di replica esistenti, puoi modificarli per utilizzare il gruppo di parametri personalizzato.

Per ulteriori informazioni, consulta gli argomenti seguenti:

Il parametro reserved-memory

Prima del 16 marzo 2017, tutta ElastiCache la gestione della memoria riservata per Redis OSS veniva eseguita utilizzando il parametro. reserved-memory Il valore di default di reserved-memory è 0. Questa impostazione predefinita non riserva memoria per il sovraccarico di Redis OSS e consente a Redis OSS di consumare tutta la memoria di un nodo con i dati.

La modifica di reserved-memory per disporre di memoria sufficiente per i backup e i failover, richiede la creazione di un gruppo di parametri personalizzato. In questo gruppo di parametri personalizzati, viene impostato reserved-memory un valore appropriato per la versione Redis OSS in esecuzione sul cluster e il tipo di nodo del cluster. Per ulteriori informazioni, consulta Qual è la quantità di memoria prenotata necessaria?

Il parametro ElastiCache for Redis OSS reserved-memory è specifico ElastiCache per Redis OSS e non fa parte della distribuzione Redis OSS.

La procedura seguente mostra come utilizzare per reserved-memory gestire la memoria sul cluster Redis OSS.

Per prenotare la memoria utilizzando la memoria prenotata
  1. Creare un gruppo di parametri personalizzato specificando la famiglia di gruppi di parametri corrispondente alla versione del motore in esecuzione, ad esempio specificando la proprietàredis2.8famiglia di gruppi di parametri. Per ulteriori informazioni, consulta Creazione di un gruppo di parametri.

    aws elasticache create-cache-parameter-group \ --cache-parameter-group-name redis6x-m3xl \ --description "Redis OSS 2.8.x for m3.xlarge node type" \ --cache-parameter-group-family redis6.x
  2. Calcola quanti byte di memoria riservare per il sovraccarico di Redis OSS. Il valore di maxmemory per il tipo di nodo è disponibile in Parametri specifici del tipo di nodo Redis OSS.

  3. Modificare il gruppo di parametri personalizzato in modo che il parametro reserved-memory corrisponda al numero di byte calcolati nella fase precedente. L' AWS CLI esempio seguente presuppone che tu stia utilizzando una versione di Redis OSS precedente alla 2.8.22 e che sia necessario riservare metà di quella del nodo. maxmemory Per ulteriori informazioni, consulta Modifica di un gruppo di parametri.

    aws elasticache modify-cache-parameter-group \ --cache-parameter-group-name redis28-m3xl \ --parameter-name-values "ParameterName=reserved-memory, ParameterValue=7130316800"

    Occorre un gruppo di parametri personalizzato separato per ogni tipo di nodo in uso, perché ogni tipo di nodo dispone di un valore maxmemory diverso. Pertanto, ogni tipo di nodo richiede un valore diverso per reserved-memory.

  4. Modifica il cluster o il gruppo di replica Redis OSS per utilizzare il gruppo di parametri personalizzato.

    L'esempio CLI seguente modifica il cluster my-redis-cluster per utilizzare da subito il gruppo di parametri personalizzato redis28-m3xl. Per ulteriori informazioni, consulta Modifica di un cluster ElastiCache .

    aws elasticache modify-cache-cluster \ --cache-cluster-id my-redis-cluster \ --cache-parameter-group-name redis28-m3xl \ --apply-immediately

    L'esempio CLI seguente modifica il gruppo di replica my-redis-repl-grp per utilizzare da subito il gruppo di parametri personalizzato redis28-m3xl. Per ulteriori informazioni, consulta Modifica di un gruppo di replica.

    aws elasticache modify-replication-group \ --replication-group-id my-redis-repl-grp \ --cache-parameter-group-name redis28-m3xl \ --apply-immediately

Il parametro reserved-memory-percent

Il 16 marzo 2017, Amazon ElastiCache ha introdotto il parametro reserved-memory-percent e lo ha reso disponibile su tutte le versioni di ElastiCache (Redis OSS). Lo scopo di reserved-memory-percent è semplificare la gestione della memoria prenotata tra tutti i cluster. A tal fine, l'utente può disporre di un singolo gruppo di parametri per ogni famiglia di gruppo di parametri (ad esempio redis2.8) per gestire la memoria prenotata dei cluster, a prescindere dal tipo di nodo. Il valore di default per reserved-memory-percent è 25 (25 percento).

Il parametro ElastiCache for Redis OSS reserved-memory-percent è specifico di ElastiCache (Redis OSS) e non fa parte della distribuzione Redis OSS.

Se il cluster utilizza un tipo di nodo della famiglia r6gd e l'utilizzo della memoria raggiunge il 75%, il tiering di dati verrà attivato automaticamente. Per ulteriori informazioni, consulta Tiering di dati.

Per riservare memoria utilizzando reserved-memory-percent

Da utilizzare reserved-memory-percent per gestire la memoria sul cluster ElastiCache for Redis OSS, esegui una delle seguenti operazioni:

  • Se utilizzi Redis OSS 2.8.22 o versione successiva, assegna il gruppo di parametri predefinito al cluster. Il valore di default di 25 percento dovrebbe essere adeguato. In caso contrario, attenersi alla procedura descritta di seguito per modificare il valore.

  • Se utilizzi una versione di Redis OSS precedente alla 2.8.22, probabilmente dovrai riservare più memoria rispetto al 25 percento predefinito. reserved-memory-percent A tale scopo, procedi come indicato di seguito.

Per modificare il valore percentuale di reserved-memory-percent
  1. Creare un gruppo di parametri personalizzato specificando la famiglia di gruppi di parametri corrispondente alla versione del motore in esecuzione, ad esempio specificando la famiglia di gruppi di parametri redis2.8. Un gruppo di parametri di default è necessario perché non è possibile modificare un gruppo di parametri di default. Per ulteriori informazioni, consulta Creazione di un gruppo di parametri.

    aws elasticache create-cache-parameter-group \ --cache-parameter-group-name redis28-50 \ --description "Redis OSS 2.8.x 50% reserved" \ --cache-parameter-group-family redis2.8

    Poiché reserved-memory-percent consente di riservare memoria con una percentuale della maxmemory del nodo, non è necessario un gruppo di parametri personalizzato per ogni tipo di nodo.

  2. Modificare il gruppo di parametri personalizzato in modo che reserved-memory-percent sia 50 (50 percento). Per ulteriori informazioni, consulta Modifica di un gruppo di parametri.

    aws elasticache modify-cache-parameter-group \ --cache-parameter-group-name redis28-50 \ --parameter-name-values "ParameterName=reserved-memory-percent, ParameterValue=50"
  3. Utilizzate questo gruppo di parametri personalizzato per qualsiasi cluster o gruppo di replica Redis OSS che esegue una versione di Redis OSS precedente alla 2.8.22.

    L'esempio CLI seguente modifica il cluster Redis OSS my-redis-cluster per utilizzare il gruppo di parametri personalizzato a partire da subito. redis28-50 Per ulteriori informazioni, consulta Modifica di un cluster ElastiCache .

    aws elasticache modify-cache-cluster \ --cache-cluster-id my-redis-cluster \ --cache-parameter-group-name redis28-50 \ --apply-immediately

    L'esempio CLI seguente modifica il gruppo di replica Redis OSS my-redis-repl-grp per utilizzare il gruppo di parametri personalizzato a partire da subito. redis28-50 Per ulteriori informazioni, consulta Modifica di un gruppo di replica.

    aws elasticache modify-replication-group \ --replication-group-id my-redis-repl-grp \ --cache-parameter-group-name redis28-50 \ --apply-immediately

Specifica del parametro di gestione della memoria prenotata

Se eri un ElastiCache cliente attuale il 16 marzo 2017, il tuo parametro di gestione della memoria riservata predefinito è reserved-memory pari a zero (0) byte di memoria riservata. Se sei diventato ElastiCache cliente dopo il 16 marzo 2017, il tuo parametro di gestione della memoria riservata predefinito prevede reserved-memory-percent il 25 percento della memoria riservata del nodo. Questo vale indipendentemente dal momento in cui hai creato il cluster o il gruppo di replica ElastiCache (Redis OSS). Tuttavia, è possibile modificare il parametro di gestione della memoria riservata utilizzando l'API AWS CLI o ElastiCache .

I parametri reserved-memory e reserved-memory-percent sono mutuamente esclusivi. Un gruppo di parametri ne conterrà sempre uno ma non entrambi. Puoi cambiare il parametro utilizzato da un gruppo di parametri per la gestione della memoria prenotata modificando il gruppo di parametri. Il gruppo di parametri deve essere un gruppo di parametri personalizzato, perché non puoi modificare i gruppi di parametri di default. Per ulteriori informazioni, consulta Creazione di un gruppo di parametri.

Per specificare reserved-memory-percent

Per utilizzare reserved-memory-percent come parametro di gestione della memoria prenotata, modifica un gruppo di parametri personalizzato utilizzando il comando modify-cache-parameter-group. Utilizzo del parametro parameter-name-values per specificare reserved-memory-percent e un valore per esso.

L'esempio CLI seguente modifica il gruppo di parametri personalizzato redis32-cluster-on in modo che utilizzi reserved-memory-percent per gestire memoria prenotata. Affinché il gruppo di parametri utilizzi il parametro ParameterName per la gestione della memoria prenotata, occorre assegnare un valore a ParameterValue. Per ulteriori informazioni, consulta Modifica di un gruppo di parametri.

aws elasticache modify-cache-parameter-group \ --cache-parameter-group-name redis32-cluster-on \ --parameter-name-values "ParameterName=reserved-memory-percent, ParameterValue=25"
Per specificare la memoria reserved-memory

Per utilizzare reserved-memory come parametro di gestione della memoria prenotata, modifica un gruppo di parametri personalizzato utilizzando il comando modify-cache-parameter-group. Utilizzo del parametro parameter-name-values per specificare reserved-memory e un valore per esso.

L'esempio CLI seguente modifica il gruppo di parametri personalizzato redis32-m3xl in modo che utilizzi reserved-memory per gestire memoria prenotata. Affinché il gruppo di parametri utilizzi il parametro ParameterName per la gestione della memoria prenotata, occorre assegnare un valore a ParameterValue. Poiché la versione del motore è più recente di 2.8.22, impostiamo il valore su 3565158400 che è 25 percento di una maxmemory di cache.m3.xlarge. Per ulteriori informazioni, consulta Modifica di un gruppo di parametri.

aws elasticache modify-cache-parameter-group \ --cache-parameter-group-name redis32-m3xl \ --parameter-name-values "ParameterName=reserved-memory, ParameterValue=3565158400"