Antimuster: Auswirkungen nicht vorhandener KVMs auf die Latenz

Sie lesen gerade die Dokumentation zu Apigee Edge.
Zur Dokumentation zu Apigee X
info

KVM-Richtlinien (Key-Value Map) sind eine grundlegende Komponente für die Verwaltung von Konfigurationen und dynamischen Werten im System. Das Vorhandensein und die Suche nach nicht vorhandenen Schlüsseln in diesen KVMs kann sich jedoch erheblich auf die Leistung auswirken und zu erhöhten Latenzen führen.

Anti-Pattern

Wenn mit einer KVM-Richtlinie versucht wird, einen Wert für einen Schlüssel abzurufen, der nicht in der Schlüssel/Wert-Zuordnung vorhanden ist, führt dies zu zusätzlichen Aufrufen der Cassandra-Datenbank. Diese vermehrte Kommunikation mit der Back-End-Datenbank, insbesondere bei nicht vorhandenen Schlüsseln, verbraucht mehr Ressourcen und Zeit, was die Gesamtlatenz der Anfrage erhöht.

Auswirkungen

Die primäre Auswirkung dieses Antipatterns sind erhöhte Laufzeitlatenzen und Datenspeicherfehler. Die Verarbeitungsgeschwindigkeit und der Datenzugriff des Systems werden negativ beeinflusst, da der hohe Prozentsatz nicht vorhandener Schlüssel-Lookups der Hauptgrund für die beobachteten Latenzen ist. Dies ist ein Laufzeitmerkmal, das direkt von der Art der eingehenden Anfragen abhängt.

Symptome

  • Das System weist erhöhte Laufzeitlatenzen auf.
  • Datenspeicherfehler, die auf Probleme mit der Verarbeitungsgeschwindigkeit und dem Datenzugriff hinweisen.

Fehlermeldungen

Die Analyse der Datei system.log weist auf wiederkehrende Cassandra-bezogene Fehler hin, insbesondere in Bezug auf den Datenabruf und den Hostpoolstatus. Folgende Fehlermeldungen wurden beobachtet:
  • 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

Diagnose

Die Analyse der Datei system.log des Message-Processors ergibt erhöhte L1MissL2Miss-Werte in den 5-Minuten-Berichten für KVM-Messwerte.

Beispiel: CACHE.org__env__KVM-Example.statistics [hitCount=215 L1MissL2Miss=14120 hitRate=5 L1MissL2Hit=212 getCount=556]

Best Practice

Um dieses Problem zu beheben, empfehlen wir, in den KVMs Dummy-Werte für nicht vorhandene Schlüssel hinzuzufügen. Dieser Ansatz sollte die Anzahl der Aufrufe von Cassandra für nicht vorhandene Schlüssel reduzieren und so die Leistung verbessern und die Latenz verringern.

Weitere Informationen