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

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 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. 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.

Więcej informacji