Les caches sont utiles pour créer des applications et une infrastructure évolutives, qui sont au cœur de l’ingénierie de la fiabilité des sites (SRE). Cet article examine ce qu’il faut pour utiliser Memcached efficacement.
Recommandations de mémoire et démonétisation de Memcached
Memcached fonctionne mieux lorsqu’il est limité à la quantité de mémoire disponible du système: il expulser données lorsqu’il prend plus d’espace que la limite de mémoire. Un certain espace mémoire sera nécessaire pour ce que nous pouvons appeler des «frais généraux» – mémoire nécessaire pour les opérations administratives de Memcached, le système d’exploitation et les processus auxiliaires.
Ceci est défini via le -m indicateur de ligne de commande, qui est probablement le seul indicateur dont vous aurez besoin pour exécuter Memcached. le -ré L’indicateur (daemonize) n’est généralement pas utile: sur les systèmes d’exploitation modernes basés sur systemd, Memcached ne devrait pas se démoniser lui-même. De même, si vous l’exécutez sous Docker, il ne doit pas non plus se démoniser.
L’exécution de Memcached dans un conteneur est très bien, mais il est important de considérer ce qui s’exécute sur l’hôte et d’ajuster soigneusement les besoins en mémoire.
Regarder les données Memcached avec des statistiques
Lorsque vous exécutez Memcached, c’est souvent une bonne idée de se connecter directement et de jouer pour voir ce qui se passe. Il est raisonnablement sûr, même avec des instances de production, tant que vous y prenez un peu de soin.
La commande la plus sûre à exécuter est Statistiques. Cela amènera Memcached à cracher un grand nombre de statistiques et de détails qui sont souvent utiles:
…
STAT disponibilité 1346
…
STAT max_connections 1024
STAT curr_connections 2
STAT total_connections 6
STAT rejeté_connexions 4
…
STAT get_hits 0
STAT get_misses 0
STAT get_expired 0
…
FIN
Les statistiques les plus intéressantes sont généralement les «coups sûrs», les «ratés» et les «expirés». Ceux-ci peuvent souvent raconter une histoire intéressante sur l’efficacité du cache. Si l’efficacité est réduite, cela est une source de préoccupation, car cela pourrait dégrader les performances de l’application.
Une chose un peu moins sûre à essayer est un stockage et une récupération. C’est un bon moyen de « botter les pneus » et d’apprendre comment cela fonctionne:
ensemble ma clé 0 0 8
ma_valeur ^ M
STOCKÉE
obtenir ma_ clé
VALUE my_key 0 8
ma_valeur
FIN
Après avoir tapé ma_valeur, vous devez envoyer une fin de ligne de style DOS: return et newline. Cela se fait dans une console Linux en utilisant Ctrl + V puis en appuyant sur Entrer, qui affichera le revenir (ASCII 13), puis appuyez sur Entrer comme d’habitude pour sortir le nouvelle ligne caractère (ASCII 10).
La première 0 est pour les « métadonnées », et en passant 0 signifie qu’il n’y a pas de métadonnées intéressantes. Il est traité comme un masque de bits, donc 0 a tous les bits désactivés. La deuxième 0 est pour la date d’expiration. Cela signifie «n’expirez pas». En général, cela convient pour les tests. Dans les paramètres de production, il est bon de définir une heure d’expiration pour les clés.
S’il s’agit d’une instance importante, il faut veiller à ne pas écraser une clé importante. Cependant, la possibilité de stocker et de récupérer rapidement via la ligne de commande permet de s’assurer que Memcached fonctionne correctement.
Partager Memcached en tant que service
Notez que dans une configuration de microservices moderne, de nombreux services voudront enregistrer des données dans Memcache, et il vaut la peine de trouver une stratégie pour gérer cela. Une option consiste à exécuter un Memcache, ou un cluster, par service. Cependant, cela est souvent compliqué et nécessite un entretien élevé. Souvent, la bonne chose est que les services partagent un Memcache. Dans ce cas, c’est une bonne idée de mettre en œuvre des politiques raisonnables; par exemple, rendre obligatoire le préfixe du nom du service à la clé. Cela permet de vérifier quels services utilisent combien d’espace en utilisant le cachedump commander:
Éléments STAT:1:nombre 2
Cette commande affichera tous les ID « slab ». Memcache stocke des clés de taille similaire dans des dalles; cet exemple n’a qu’une seule dalle:
ITEM my_key [[8 b; 0 s]
ARTICLE foo [[5 b; 0 s]
FIN
Ici, il y a deux clés: une avec une valeur de 8 octets et une avec une valeur de 5 octets.
Dans un scénario plus réaliste avec de nombreuses clés, vous souhaiterez peut-être traiter ces données avec awk ou un script et, en utilisant une convention locale, déterminez l’espace utilisé par chaque service.
Cela peut être intégré dans un système de surveillance, comme Prometheus, pour suivre le comportement au fil du temps.
De plus, comme de nombreuses équipes partagent le même service, il est utile de suggérer que les services chiffrent et authentifient les données qu’ils mettent en cache. Le chiffrement symétrique sur les processeurs modernes est performant, ce qui permet des modèles de sécurité beaucoup plus simples. Un exemple de bibliothèque qui prend en charge cela est Fernet de la cryptographie. (Faites-moi savoir dans les commentaires si vous souhaitez en savoir plus à ce sujet.)
Conclusion
Memcached est une technologie open source commune à prendre en charge par un SRE. Dans cet article, j’ai regardé comment interroger des statistiques courantes à ce sujet, offert quelques conseils de configuration et montré comment aider plusieurs équipes à partager un seul cluster Memcached de manière facile à surveiller et sécurisée. Avez-vous d’autres questions sur la gestion de Memcached? Demandez dans les commentaires, et je partagerai avec plaisir plus de conseils.
Source : https://opensource.com/article/20/3/sre-memcached Traduit de l’anglais sous licence CC BY-SA 4.0