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.

De plus, si vous rencontrez des problèmes d'indisponibilité des clés, attendez et réessayez en utilisant un intervalle exponentiel entre les tentatives. Veillez à définir un délai au terme duquel votre stratégie de nouvelle tentative va cesser.

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 la détection automatique, mais cela n'est pas recommandé, car cela réduit les performances de votre application.

Nous vous recommandons d'utiliser le service de détection automatique Memorystore pour Memcached. Ce service automatise la gestion des adresses IP de cluster lors de l'ajout ou de la suppression de nœuds dans votre cluster. Pour savoir comment configurer la découverte 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 mieux configurer le paramètre max-item-size. Pour connaître les étapes à suivre pour ajuster ce paramètre de configuration, consultez la page Configurer des 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 Open Source Memcached, la valeur minimale de max-item-size est 1KiB, la valeur maximale est de 1 GiB et la valeur par défaut est 1 MiB. Pour Memorystorestore 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 à laquelle vous définissez cette configuration doit être divisible par 512 KiB.

Mettre en cache une entrée plus grande que la valeur max-item-size configurée

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

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

Vous pouvez résoudre certains problèmes avec le paramètre max-item-size en le définissant sur la valeur maximale. Cependant, cette pratique n'est pas recommandée. Vous ne devez donc pas utiliser cette stratégie en production. La gestion de la mémoire Memcached est basée sur des ateliers, et le stockage d'éléments plus importants que l'atelier ne conduit pas à une allocation de mémoire inefficace.

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

Commencez par déterminer la taille maximale d'élément requise pour le cache. Définissez max-item-size sur une valeur légèrement supérieure à la plus grande taille d'élément, en tant que marge de sécurité.

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

É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/usage_time)

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 à plus de 80%, il est possible que la tendance continue. Par conséquent, vous pouvez augmenter la taille de votre instance plus tôt afin que le cache dispose de suffisamment d'espace 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 %.

Sinon, suivre ces métriques au fil du temps peut indiquer que vous n'utilisez pas tout l'espace et les ressources de processeur dont vous disposez actuellement. Dans ce cas, il peut être plus rentable de réduire la taille de votre cluster.

Étape suivante