Gestion de la mémoire réservée - Amazon ElastiCache for Redis

Gestion de la mémoire réservée

La mémoire réservée est mise de côté pour être utilisée à des fins autres que le traitement des données. Lorsque vous effectuez une sauvegarde ou un basculement, Redis utilise la mémoire disponible pour enregistrer les opérations d'écriture sur votre cluster, tandis que les données du cluster sont écrites dans le fichier .rdb. Si vous ne disposez pas de suffisamment de mémoire pour toutes les écritures, le processus échouera. Vous trouverez ci-dessous des informations sur les options de gestion de la mémoire réservée pour ElastiCache for Redis et sur la manière d'appliquer ces options.

De quelle quantité de mémoire réservée avez-vous besoin ?

Si vous exécutez une version de Redis antérieure à 2.8.22, vous devez réserver davantage de mémoire pour les sauvegardes et les basculements que si vous exécutez la version 2.8.22 ou des versions ultérieures. Cette exigence vient des différentes façons dont ElastiCache for Redis implémente le processus de sauvegarde. En règle générale, vous devez réserver la moitié de la valeur maxmemory du type de nœud pour la surcharge Redis avec les versions antérieures à 2.8.22, et 1/4 pour les versions 2.8.22 et ultérieures de Redis.

Lorsque vous utilisez des clusters avec hiérarchisation des données, nous vous recommandons d’augmenter maxmemory jusqu’à la moitié de la mémoire disponible de votre nœud si votre charge de travail est lourde en écriture.

Pour plus d'informations, consultez les ressources suivantes :

Paramètres de gestion de la mémoire réservée

À compter du 16 mars 2017, Amazon ElastiCache for Redis fournit deux paramètres mutuellement exclusifs pour la gestion de votre mémoire Redis : reserved-memory et reserved-memory-percent. Aucun de ces paramètres ne fait partie de la distribution Redis.

Selon le moment où vous êtes devenu client ElastiCache, l'un ou l'autre de ces paramètres est le paramètre par défaut de gestion de la mémoire. Ce paramètre s'applique lorsque vous créez un cluster ou groupe de réplication Redis et que vous utilisez un groupe de paramètres par défaut.

  • Pour les clients ayant commencé avant le 16 mars 2017 – Lorsque vous créez un cluster ou un groupe de réplication Redis à l'aide du groupe de paramètres par défaut, votre paramètre de gestion de la mémoire est reserved-memory. Dans ce cas, zéro (0) octets de mémoire sont réservés.

  • Pour les clients ayant commencé le 16 mars 2017 ou après – Lorsque vous créez un cluster ou un groupe de réplication Redis à l'aide du groupe de paramètres par défaut, votre paramètre de gestion de la mémoire est reserved-memory-percent. Dans ce cas, 25 % de la valeur maxmemory de votre nœud est réservée à des fins non liées aux données.

Après avoir lu les deux paramètres de gestion de la mémoire Redis, vous préférerez peut-être utiliser celui qui n'est pas votre valeur par défaut ou avec des valeurs autres que par défaut. Dans ce cas, vous pouvez passer à l'autre paramètre de gestion de la mémoire réservée.

Pour modifier la valeur de ce paramètre, vous pouvez créer un groupe de paramètres personnalisé et le modifier pour utiliser le paramètre et la valeur de gestion de la mémoire préférés. Vous pouvez ensuite utiliser le groupe de paramètres personnalisés chaque fois que vous créez un nouveau cluster ou groupe de réplication Redis. Pour les clusters ou les groupes de réplication existants, vous pouvez les modifier afin d'utiliser votre groupe de paramètres personnalisés.

Pour plus d'informations, veuillez consulter les ressources suivantes :

Paramètre reserved-memory

Avant le 16 mars 2017, la totalité de la gestion de la mémoire réservée d'ElastiCache for Redis était effectuée à l'aide du paramètre reserved-memory. La valeur par défaut de reserved-memory est 0. Cette valeur par défaut ne réserve aucune mémoire pour la surcharge Redis et permet à Redis de consommer toute la mémoire du nœud avec des données.

Pour pouvoir modifier reserved-memory afin de disposer d'une quantité de mémoire suffisante pour les sauvegardes et les basculements, vous devez créer un groupe de paramètres personnalisé. Dans ce groupe de paramètres personnalisé, vous affectez à reserved-memory une valeur appropriée pour la version de Redis exécutée sur votre cluster et pour le type de nœud du cluster. Pour plus d'informations, veuillez consulter De quelle quantité de mémoire réservée avez-vous besoin ?

Le paramètre ElastiCache for Redis reserved-memory est spécifique à ElastiCache for Redis et ne fait pas partie de la distribution Redis.

La procédure suivante montre comment utiliser reserved-memory afin de gérer la mémoire sur votre cluster Redis.

Pour réserver de la mémoire à l'aide de la mémoire réservée

  1. Créez un groupe de paramètres personnalisé spécifiant la famille de groupe de paramètres correspondant à la version de moteur exécutée par exemple, la famille de groupe de paramètres redis2.8. Pour plus d’informations, consultez Création d'un groupe de paramètres.

    aws elasticache create-cache-parameter-group \ --cache-parameter-group-name redis28-m3xl \ --description "Redis 2.8.x for m3.xlarge node type" \ --cache-parameter-group-family redis2.8
  2. Calculez le nombre d'octets de mémoire dont vous avez besoin pour réserver la surcharge de Redis. Vous pouvez trouver la valeur de maxmemory du type de nœud dans Paramètres propres au type de nœud Redis.

  3. Modifiez le groupe de paramètres personnalisé de façon à ce que le paramètre reserved-memory corresponde au nombre d'octets calculé au cours de la première étape. L'exemple d'AWS CLI suivant suppose que vous exécutiez une version de Redis antérieure à 2.8.22 et que vous réserviez la moitié du paramètre maxmemory du nœud. Pour plus d’informations, consultez Modification d'un groupe de paramètres.

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

    Notez que vous avez besoin d'un groupe de paramètres personnalisé distinct pour chaque nœud utilisé dans la mesure où chaque type de nœud a une valeur maxmemory différente. Par conséquent, chaque type de nœud a besoin d'une valeur différente pour reserved-memory.

  4. Modifiez votre cluster ou groupe de réplication Redis afin d'utiliser votre groupe de paramètres personnalisé.

    L'exemple de la CLI suivant modifie le cluster my-redis-cluster afin qu'il utilise le groupe de paramètres personnalisé redis28-m3xl immédiatement. Pour plus d’informations, consultez Modification d'un cluster ElastiCache.

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

    L'exemple de la CLI suivant modifie le groupe de réplication my-redis-repl-grp afin qu'il utilise le groupe de paramètres personnalisé redis28-m3xl immédiatement. Pour en savoir plus, Modification d'un groupe de réplication.

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

Paramètre reserved-memory-percent

Le 16 mars 2017, Amazon ElastiCache a introduit le paramètre reserved-memory-percent et l'a rendu disponible sur toutes les versions d'ElastiCache for Redis. L'objectif de reserved-memory-percent est de simplifier la gestion de la mémoire réservée sur tous vos clusters. Vous avez ainsi la possibilité d'avoir un seul groupe de paramètres pour chaque famille de groupe de paramètres (par exemple, redis2.8) afin de gérer la mémoire réservée de votre cluster, quel que soit le type de nœud. La valeur par défaut de reserved-memory-percent est 25 (25 %).

Le paramètre ElastiCache for Redis reserved-memory-percent est spécifique à ElastiCache for Redis et ne fait pas partie de la distribution Redis.

Si votre cluster utilise un type de nœud de la famille r6gd et que votre utilisation de la mémoire atteint 75 %, la hiérarchisation des données sera automatiquement déclenchée. Pour plus d’informations, consultez Mise à niveau des données.

Pour réserver de la mémoire à l'aide de reserved-memory-percent

Pour utiliser reserved-memory-percent pour gérer la mémoire sur votre cluster ElastiCache pour Redis, procédez comme suit :

  • Si vous exécutez Redis 2.8.22 ou une version ultérieure, il vous suffit d'attribuer le groupe de paramètres par défaut à votre cluster. Les 25 % par défaut devraient convenir. Si tel n'est pas le cas, procédez comme suit pour modifier la valeur.

  • Si vous exécutez une version de Redis antérieure à 2.8.22, vous aurez probablement besoin de réserver davantage de mémoire que les 25 % par défaut du paramètre reserved-memory-percent. Pour cela, procédez comme suit.

Pour modifier la valeur en % du pourcentage de reserved-memory-percent

  1. Créez un groupe de paramètres personnalisé spécifiant la famille de groupe de paramètres correspondant à la version de moteur exécutée par exemple, la famille de groupe de paramètres redis2.8. Un groupe de paramètres personnalisé est nécessaire car vous ne pouvez pas modifier un groupe de paramètres par défaut. Pour plus d’informations, consultez Création d'un groupe de paramètres.

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

    Dans la mesure où reserved-memory-percent réserve de la mémoire sous forme de pourcentage du paramètre maxmemory d'un nœud, vous n'avez pas besoin d'un groupe de paramètres personnalisé pour chaque type de nœud.

  2. Modifiez le groupe de paramètres personnalisé afin que le paramètre reserved-memory-percent soit défini sur 50 (50 %). Pour plus d’informations, consultez Modification d'un groupe de paramètres.

    aws elasticache modify-cache-parameter-group \ --cache-parameter-group-name redis28-50 \ --parameter-name-values "ParameterName=reserved-memory-percent, ParameterValue=50"
  3. Utilisez ce groupe de paramètres personnalisé pour tous les clusters ou groupes de réplication Redis qui exécutent une version de Redis antérieure à 2.8.22.

    L'exemple de la CLI suivant modifie le cluster Redis my-redis-cluster afin qu'il utilise le groupe de paramètres personnalisé redis28-50 immédiatement. Pour plus d’informations, consultez Modification d'un cluster ElastiCache.

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

    L'exemple de la CLI suivant modifie le groupe de réplication Redis my-redis-repl-grp afin qu'il utilise le groupe de paramètres personnalisé redis28-50 immédiatement. Pour plus d’informations, consultez Modification d'un groupe de réplication.

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

Spécification de votre paramètre de gestion de la mémoire réservée

Si vous étiez déjà client ElastiCache au 16 mars 2017, votre paramètre de gestion de la mémoire réservée par défaut est reserved-memory avec zéro (0) octet de mémoire réservée. Si vous êtes devenu client ElastiCache après le 16 mars 2017, votre paramètre de gestion de la mémoire réservée par défaut est reserved-memory-percent avec 25 % de la mémoire du nœud réservée. Ceci est vrai quel que soit le moment où vous avez créé votre cluster ElastiCache for Redis ou votre groupe de réplication. Néanmoins, vous pouvez modifier votre paramètre de gestion de la mémoire réservée à l'aide de la AWS CLI ou de l'API ElastiCache.

Les paramètres reserved-memory et reserved-memory-percent sont mutuellement exclusifs. Un groupe de paramètres est toujours associé à un paramètre, mais jamais aux deux. Vous pouvez modifier le paramètre utilisé par un groupe de paramètres pour la gestion de la mémoire réservée en modifiant le groupe de paramètres. Le groupe de paramètres doit être un groupe de paramètres personnalisé, car vous ne pouvez pas modifier les groupes de paramètres par défaut. Pour plus d’informations, consultez Création d'un groupe de paramètres.

Pour spécifier reserved-memory-percent

Pour utiliser reserved-memory-percent comme paramètre de gestion de la mémoire réservée, modifiez un groupe de paramètres personnalisés à l'aide de la commande modify-cache-parameter-group. Utilisez le paramètre parameter-name-values pour spécifier reserved-memory-percent et une valeur pour cela.

L'exemple de la CLI suivant modifie le groupe de paramètres personnalisé redis32-cluster-on afin qu'il utilise reserved-memory-percent pour gérer la mémoire réservée. Une valeur doit être affectée à ParameterValue pour que le groupe de paramètres utilise le paramètre ParameterName pour la gestion de la mémoire réservée. Pour plus d’informations, consultez Modification d'un groupe de paramètres.

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

Pour spécifier reserved-memory

Pour utiliser reserved-memory comme paramètre de gestion de la mémoire réservée, modifiez un groupe de paramètres personnalisés à l'aide de la commande modify-cache-parameter-group. Utilisez le paramètre parameter-name-values pour spécifier reserved-memory et une valeur pour cela.

L'exemple de la CLI suivant modifie le groupe de paramètres personnalisé redis32-m3xl afin qu'il utilise reserved-memory pour gérer la mémoire réservée. Une valeur doit être affectée à ParameterValue pour que le groupe de paramètres utilise le paramètre ParameterName pour la gestion de la mémoire réservée. Comme la version du moteur est plus récente que la version 2.8.22, nous définissons la valeur sur 3565158400, soit 25 % de cache.m3.xlarge du maxmemory. Pour plus d’informations, consultez Modification d'un groupe de paramètres.

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