Wyświetlasz dokumentację Apigee Edge.
Zapoznaj się z dokumentacją Apigee X. info
Zasady mapy klucz-wartość (KVM) są podstawowym elementem zarządzania konfiguracjami i wartościami dynamicznymi w systemie. Jednak obecność i wyszukiwanie nieistniejących kluczy w tych maszynach wirtualnych może znacząco wpłynąć na wydajność i wydłużyć czas oczekiwania.
Antywzorzec
Gdy zasada KVM próbuje pobrać wartość klucza, który nie istnieje w mapie klucz-wartość, powoduje to dodatkowe wywołania bazy danych Cassandra. Ta zwiększona komunikacja z bazą danych backendu, zwłaszcza w przypadku nieistniejących kluczy, zużywa więcej zasobów i czasu, co zwiększa ogólne opóźnienie żądania.
Wpływ
Głównym skutkiem tego antypatternu jest zwiększenie opóźnień w czasie działania i błędy w pamięci danych. Szybkość przetwarzania i dostęp do danych w systemie są negatywnie wpływane przez wysoki odsetek wyszukiwań nieistniejących kluczy, który jest główną przyczyną obserwowanych opóźnień. Jest to cecha środowiska wykonawczego, która zależy bezpośrednio od charakteru przychodzących żądań.
Objawy
- System wykazuje podwyższone opóźnienia w czasie działania.
- Błędy w pamięci danych, które wskazują na problemy z szybkością przetwarzania i dostępem do danych.
Komunikaty o błędach
Analiza plikusystem.log
wskazuje na występowanie powtarzających się błędów związanych z Cassandrą, w szczególności dotyczących pobierania danych i stanu puli hostów. Do najważniejszych zaobserwowanych komunikatów o błędach należą: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
Diagnostyka
Analiza pliku system.log
procesora wiadomości ujawnia podwyższone wartości L1MissL2Miss
w 5-minutowych raportach o danych KVM.
Na przykład: CACHE.org__env__KVM-Example.statistics [hitCount=215 L1MissL2Miss=14120 hitRate=5 L1MissL2Hit=212 getCount=556]
Sprawdzona metoda
Aby złagodzić ten problem, zalecamy dodanie do map kluczy wartościowych fikcyjnych wartości dla nieistniejących kluczy. Takie podejście powinno zmniejszyć liczbę wywołań Cassandry w przypadku nieistniejących kluczy, co zwiększy wydajność i skróci czas oczekiwania.