Vous consultez la documentation Apigee Edge.
Accédez à la documentation Apigee X.
Les règles de mappage clé-valeur (KVM) sont un élément fondamental pour gérer les configurations et les valeurs dynamiques dans le système. Toutefois, la présence et la recherche de clés inexistantes dans ces KVM peuvent avoir un impact significatif sur les performances et entraîner une augmentation de la latence.
Antimodèle
Lorsqu'une règle KVM tente de récupérer une valeur pour une clé qui n'existe pas dans le mappage clé-valeur, cela entraîne des appels supplémentaires à la base de données Cassandra. Cette communication accrue avec la base de données backend, en particulier pour les clés inexistantes, consomme plus de ressources et de temps, ce qui augmente la latence globale des requêtes.
Impact
L'effet principal de ce modèle est l'augmentation des latences d'exécution et des erreurs de datastore. La vitesse de traitement et l'accès aux données du système sont affectés négativement, car le pourcentage élevé de recherches de clés inexistantes est la principale raison des latences observées. Il s'agit d'une caractéristique d'exécution qui dépend directement de la nature des requêtes entrantes.
Symptômes
- Le système présente des latences d'exécution élevées.
- Erreurs de data store, indiquant des problèmes de vitesse de traitement et d'accès aux données.
Messages d'erreur
L'analyse du fichiersystem.log
indique la présence d'erreurs récurrentes liées à Cassandra, en particulier concernant la récupération de données et l'état du pool d'hôtes. Voici quelques-uns des messages d'erreur les plus courants :
ERROR DATASTORE.CASSANDRA - AstyanaxCassandraClient.get() : Exception while fetching rowKey : [7ccd1062-6e05-4d12-aa86-5c7bf944682d, app_credentials, kms] from column family:{} in keyspace:{}
ERROR DATASTORE.CASSANDRA - AstyanaxCassandraClient.logHostPoolInCaseOfErrors() : Cassandra Host Pool under use - All Hosts: xx.xx.xx.102(xx.xx.xx.102):9160,xx.xx.xx.101(xx.xx.xx.101):9160,xx.xx.xx.103(xx.xx.xx.103):9160. Active Hosts: xx.xx.xx.101(xx.xx.xx.101):9160,xx.xx.xx.102(xx.xx.xx.102):9160
Diagnostic
L'analyse du fichier system.log
du processeur de messages révèle des valeurs L1MissL2Miss
élevées dans les rapports de métriques KVM de cinq minutes.
Par exemple : CACHE.org__env__KVM-Example.statistics [hitCount=215 L1MissL2Miss=14120 hitRate=5 L1MissL2Hit=212 getCount=556]
Bonne pratique
Pour atténuer ce problème, nous vous recommandons d'ajouter des valeurs fictives pour les clés inexistantes dans les KVM. Cette approche devrait réduire le nombre d'appels à Cassandra pour les clés inexistantes, ce qui améliorera les performances et réduira la latence.