Antywzorzec: wpływ nieistniejących maszyn KVM na czas oczekiwania

Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
info

Zasady map klucz-wartość (KVM) są podstawowym elementem zarządzania konfiguracjami i wartościami dynamicznymi w systemie. Jednak obecność i wyszukiwanie nieistniejących kluczy w tych mapach KVM może znacząco wpłynąć na wydajność i zwiększyć 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, szczególnie w przypadku nieistniejących kluczy, zużywa więcej zasobów i czasu, co zwiększa ogólny czas oczekiwania na żądanie.

Wpływ

Głównym skutkiem tego antywzorca jest wydłużenie czasu oczekiwania w czasie działania i błędy magazynu danych. Szybkość przetwarzania i dostęp do danych w systemie są negatywnie wpływane, ponieważ główną przyczyną obserwowanych opóźnień jest wysoki odsetek wyszukiwań nieistniejących kluczy. Jest to cecha czasu działania, która jest bezpośrednio zależna od charakteru przychodzących żądań.

Objawy

  • System wykazuje wydłużony czas oczekiwania w czasie działania.
  • Błędy magazynu danych wskazujące na problemy z szybkością przetwarzania i dostępem do danych.

Komunikaty o błędach

Analiza pliku system.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. Główne obserwowane komunikaty o błędach:
  • 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 dotyczących metryk KVM.

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

Sprawdzona metoda

Aby rozwiązać ten problem, zalecamy dodanie wartości zastępczych dla nieistniejących kluczy w mapach KVM. Takie podejście powinno zmniejszyć liczbę wywołań Cassandry w przypadku nieistniejących kluczy, co poprawi wydajność i skróci czas oczekiwania.

Więcej informacji