Stai visualizzando la documentazione di Apigee Edge.
Consulta la
documentazione di Apigee X. info
I criteri della mappa chiave-valore (KVM) sono un componente fondamentale per la gestione delle configurazioni e dei valori dinamici all'interno del sistema. Tuttavia, la presenza e la ricerca di chiavi inesistenti all'interno di queste KVM possono influire in modo significativo sulle prestazioni e portare a un aumento delle latenze.
Antipattern
Quando un criterio KVM tenta di recuperare un valore per una chiave che non esiste nella mappa chiave-valore, vengono effettuate chiamate aggiuntive al database Cassandra. Questa maggiore comunicazione con il database di backend, in particolare per le chiavi inesistenti, consuma più risorse e tempo, aumentando così la latenza complessiva delle richieste.
Impatto
L'effetto principale di questo antipattern è l'aumento delle latenze di runtime e degli errori del datastore. La velocità di elaborazione e l'accesso ai dati del sistema sono influenzati negativamente, in quanto l'alta percentuale di ricerche di chiavi inesistenti è il motivo principale delle latenze osservate. Si tratta di una caratteristica di runtime che dipende direttamente dalla natura delle richieste in entrata.
Sintomi
- Il sistema mostra latenze di runtime elevate.
- Errori del datastore, che indicano problemi con la velocità di elaborazione e l'accesso ai dati.
Messaggi di errore
L'analisi del filesystem.log
indica la presenza di errori ricorrenti correlati a Cassandra, in particolare
per quanto riguarda il recupero dei dati e lo stato del pool di host. I principali messaggi di errore osservati includono:
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
Diagnosi
L'analisi del file system.log
del processore di messaggi rivela valori L1MissL2Miss
elevati nei report delle metriche KVM di 5 minuti.
Ad esempio: CACHE.org__env__KVM-Example.statistics [hitCount=215 L1MissL2Miss=14120 hitRate=5 L1MissL2Hit=212 getCount=556]
Best practice
Per risolvere questo problema, ti consigliamo di aggiungere valori fittizi per le chiavi inesistenti nelle KVM. Questo approccio dovrebbe ridurre il numero di chiamate a Cassandra per le chiavi inesistenti, migliorando le prestazioni e riducendo la latenza.