Warum ist meine Amazon-DynamoDB-Metrik für maximale Latenz hoch, wenn die durchschnittliche Latenz normal ist?

Letzte Aktualisierung: 7.9.2022

Wenn ich die Amazon-CloudWatch-Metriken für meine Amazon-DynamoDB-Workloads überprüfe, ist die maximale Latenzmetrik hoch. Die durchschnittliche Latenz ist jedoch normal.

Auflösung

Bei der Analyse der CloudWatch-Metrik SuccessfulRequestLatency empfiehlt es sich, die durchschnittliche Latenz zu überprüfen. Die maximale Latenz gibt kein Bild der gesamten Latenz in Ihrer DynamoDB-Tabelle. Stattdessen wird die maximale Zeit angezeigt, die eine einzelne Anfrage in diesem Zeitraum benötigt. Wenn Sie beispielsweise 100 Anforderungen gleichzeitig in einer DynamoDB-Tabelle haben, selbst wenn 99 Anforderungen 10 ms und eine einzelne Anforderung 100 ms dauert, beträgt die maximale Latenzmetrik 100 ms.

DynamoDB ist ein Massenverteilungssystem mit Tausenden von Knoten in der Backend-Flotte. Eine DynamoDB-Tabelle kann also mehrere Partitionen im Tablespace haben, und jede Partition hat mehrere Kopien in der Backend-Flotte. Wenn Sie einen API-Aufruf an DynamoDB durchführen, empfängt der Endpunkt des DynamoDB-Services Ihren Anruf und leitet ihn dann zur Verarbeitung an einen der Backend-Knoten weiter. Wenn der Anruf erfolgreich verarbeitet wurde, leitet DyanamoDB die Ergebnisse an Ihren Kunden zurück.

In den meisten Fällen wird der API-Aufruf erfolgreich in einem einzigen Versuch verarbeitet, und Sie beobachten eine kundenseitige geringe Latenz. Manchmal schlägt der erste Versuch jedoch fehl, wenn der Backend-Knoten Folgendes feststellt:

  • Eine geschäftige Zeit
  • Failover
  • Aufteilung der Partition
  • Probleme mit der Konnektivität
In solchen Fällen schlägt der erste Versuch innerhalb einer serverseitigen Ausfallzeit (5 000 ms) fehl. Anschließend wiederholt der Server automatisch den API-Aufruf auf einem anderen Knoten, oft mehrmals. Der Server gibt das Ergebnis an Ihren Kunden zurück, wenn der API-Aufruf erfolgreich verarbeitet wurde. In diesem Fall beobachten Sie eine erhöhte Latenz für diese bestimmte Anforderung.

Daher ist eine Metrik mit hoher maximaler Latenz im Allgemeinen kein Grund zur Sorge. Wenn der DynamoDB-Service eine konstant hohe Latenz von einem Knoten aus beobachtet, entfernt der Service diese Komponente automatisch aus der Backend-Flotte. Sie können eine erhöhte Latenz für einen bestimmten Prozentsatz der API-Aufrufe beobachten, wenn der zuvor erwähnte lokalisierte Fehler serverseitig auftritt. Dies spiegelt sich in einer hohen maximalen SuccessfulRequestLatency in den CloudWatch-Metriken für die zugehörigen DynamoDB-Tabellen wider. Aus diesem Grund können lokalisierte Fehler Ihre maximale Latenz erhöhen, Sie müssen jedoch keine Maßnahmen ergreifen, um diesen Fehler zu kontrollieren.

Sie können Ihre Anwendung jedoch so konfigurieren, dass sie schnell reagiert, indem sie mit einem exponentiellen Backoff-Wiederholungsversuch schnell fehlschlägt. Dies bedeutet, dass die neue Anforderung den neuen Knoten erreicht und Sie schnellere Ergebnisse erhalten. Weitere Informationen finden Sie unter Optimieren der HTTP-Anforderungseinstellungen für AWS Java SDK für latenzfähige Amazon-DynamoDB-Anwendungen.


War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?