Bonnes pratiques

Cette page décrit les bonnes pratiques à suivre lors de l'utilisation de Memorystore pour Memcached.

Concevoir l'application pour gérer les défauts de cache (miss)

Vous devez suivre les bonnes pratiques standards de conception du cache en créant le cache pour qu'il gère les défauts de cache (miss) et l'indisponibilité de service. Pour plus d'informations sur l'engagement de Memorystore pour Memcached pour le temps d'activité, reportez-vous au contrat de niveau de service.

Concevez votre application de sorte que les défauts de cache et les temps d'arrêt temporaires du service n'empêchent pas votre application de récupérer les données de la base de données sous-jacente compatible avec votre instance Memcached.

En outre, si vous constatez une indisponibilité de l'espace de clés, attendez et réessayez en utilisant un intervalle exponentiel entre les tentatives. Assurez-vous de définir une limite au-delà de laquelle votre stratégie de nouvelle tentative s'arrête.

Se connecter aux nœuds Memcached

Lorsque vous interrogez des nœuds Memcached à l'aide de commandes telles que set, get et delete, vous devez vous connecter directement aux adresses IP des nœuds. Il est possible d'exécuter ces commandes sur le point de terminaison de détection automatique. Toutefois, cette opération n'est pas recommandée, car elle réduit les performances de votre application.

Nous vous recommandons d'utiliser le service de détection automatique de Memorystore pour Memcached. Ce service automatise la gestion des adresses IP lors de l'ajout ou de la suppression de nœuds de votre cluster. Pour obtenir des instructions sur la configuration de la détection automatique pour votre cluster, consultez la page Utiliser le service de détection automatique.

Configurer correctement le paramètre max-item-size

Cette section explique comment configurer au mieux le paramètre max-item-size. Pour connaître les étapes à suivre pour ajuster ce paramètre de configuration, consultez la page Configurer les instances Memcached. Pour obtenir la liste complète des paramètres de configuration Memcached disponibles, consultez la section Configurations Memcached.

Valeurs autorisées et valeurs par défaut

Pour la version Open Source de Memcached, la valeur minimale de max-item-size est 1KiB, la valeur maximale est 1 GiB, et la valeur par défaut est 1 MiB. Pour Memorystore pour Memcached, la valeur minimale est 512 KiB, la valeur maximale est 128 MiB, et la valeur par défaut est 1 MiB. En outre, toute valeur utilisée pour définir cette configuration doit être divisible par 512 KiB.

Mettre en cache une entrée dont la taille est supérieure à la taille maximale configurée pour max-item-size

Lorsque vous tentez de mettre en cache une entrée dont la taille est supérieure à celle configurée pour max-item-size, Memcached fait échouer l'opération et renvoie la valeur "false". Si possible, intégrez à votre application une logique pour afficher cette erreur à partir du client OSS Memcached, afin de pouvoir la déboguer. Toute tentative de mise en cache d'une entrée dont la taille dépasse la valeur configurée pour max-item-size peut entraîner une latence élevée pour votre instance.

Définir max-item-size sur la valeur maximale

Vous pouvez résoudre certains problèmes liés au paramètre max-item-size en le définissant sur la valeur maximale. Il ne s'agit toutefois pas d'une bonne pratique. Vous ne devez donc pas utiliser cette stratégie en production. La gestion de la mémoire Memcached est basée sur les dalles, et le stockage d'éléments plus volumineux qu'une dalle rend l'allocation de mémoire inefficace.

Éviter les problèmes de configuration de max-item-size

Déterminez d'abord la taille maximale d'élément requise pour votre cache. Définissez max-item-size pour qu'il soit légèrement supérieur à la taille maximale d'un élément, pour avoir une marge de sécurité.

Notez que la taille des valeurs écrites dans votre cache peut changer dans votre application au fil du temps. De plus, le cluster peut être mal configuré (par exemple, lors de la migration d'un environnement à un autre). Une mesure supplémentaire que vous pouvez prendre consiste à valider la taille maximale des éléments dans votre application, de sorte que la requête soit rejetée si votre application tente de mettre en cache des éléments plus volumineux que la valeur configurée du paramètre.

Équilibrer un cluster Memcached déséquilibré

Mode de fonctionnement des clusters déséquilibrés et risques associés

Dans de rares cas, lorsque vous créez une instance Memcached, les nœuds peuvent être répartis de manière inégale entre les zones d'une région. Cela se produit lorsqu'une zone n'est pas disponible en même temps que vous provisionnez le cluster.

Un cluster non équilibré augmente le risque de perte de données, car les nœuds ne sont pas distribués aussi uniformément qu'ils pourraient l'être. Le cluster n'est pas automatiquement rééquilibré lorsque la zone qui s'est interrompue est de nouveau en ligne.

Comment rééquilibrer votre cluster

Vous pouvez rééquilibrer le cluster en augmentant temporairement le nombre de nœuds de celui-ci, puis en le rétablissant au nombre initial de nœuds. Effectuer un scaling à la hausse et à la baisse permet au système de Memorystore pour Memcached de redistribuer les nœuds de manière uniforme entre les zones disponibles.

Le succès de cette méthode pour le rééquilibrage de votre cluster dépend de la disponibilité des zones en question. Google Cloud ne répertorie pas les zones disponibles/non disponibles actuellement. Vous ne pouvez donc savoir que la zone est en ligne que si les nœuds sont correctement équilibrés pendant l'opération de scaling.

Bonnes pratiques relatives à Cloud Monitoring

Pour suivre les performances de votre cache au fil du temps, utilisez Cloud Monitoring afin de surveiller certaines métriques essentielles de Memorystore pour Memcached :

  • Utilisation de la mémoire (memcache.googleapis.com/node/cache_memory)
  • Pourcentage d'utilisation du processeur (memcache.googleapis.com/node/cpu/utilization)

Le suivi de ces deux métriques au fil du temps vous permet de déterminer l'efficacité de votre cluster et de déterminer si vous devez augmenter ou diminuer la taille de votre cluster.

Par exemple, si les métriques indiquent que l'utilisation de la mémoire et du processeur a augmenté au fil du temps pour dépasser 80 %, il est possible que la tendance persiste. Par conséquent, vous pouvez augmenter la taille de votre instance de manière anticipée afin que votre cache dispose d'un espace suffisant pour stocker de nouvelles valeurs à mesure que les besoins en ressources de votre application augmentent.

Nous vous recommandons de définir une alerte lorsque votre utilisation de la mémoire et du processeur atteint 80 %.

En outre, le suivi de ces métriques au fil du temps peut indiquer que vous n'utilisez pas toutes les ressources d'espace et de processeur dont vous disposez actuellement. Dans ce cas, il serait plus rentable de réduire la taille de votre cluster.

Étapes suivantes