Wie kann ich Latenzprobleme für meinen Edge-optimierten API-Endpunkt in API-Gateway beheben?

Lesedauer: 4 Minute
0

Ich stelle eine höhere Latenz fest, wenn Kunden Anfragen an meine Edge-optimierte API in Amazon-API-Gateway senden. Wie finde ich die Ursache der Latenz für die Fehlerbehebung?

Kurzbeschreibung

Um die Latenzquelle für einenEdge-optimierten API-Endpunkt zu ermitteln, bestimmen Sie, wie lange jeder der folgenden Teile des Verbindungspfads dauert:

Wichtig: Diese Verbindungspfadschritte gelten nur für Edge-optimierte API-Endpunkte und nicht für regionale API-Endpunkte. Der Zugriff auf Edge-optimierte APIs erfolgt über eine Amazon CloudFront-Verteilung. Der Zugriff auf regionale API-Endpunkte erfolgt nicht über CloudFront.

  1. Beginn der Verbindung zur DNS-Namensauflösung
  2. Beginn der Verbindung zum Transmission Control Protocol (TCP)-Handshake zur Verbindung mit CloudFront
  3. Beginn der Verbindung zum Secure Sockets Layer (SSL)-Handshake zur Verbindung mit CloudFront
  4. Beginn der Verbindung zum Senden der Client-HTTP-Anfrage an CloudFront
  5. Beginn der Verbindung zum ersten von CloudFront übertragenen Byte
  6. Gesamtzeit für die Anfrage und die Antwort an die API
  7. Zeit für die Verarbeitung der Anforderung durch API-Gateway und die Antwort an den CloudFront-Edge-Standort
  8. Zeit, die der Integrationsendpunkt benötigt, um auf die HTTP-Anfrage vom API-Gateway antworten
  9. Zeit für die Antwort des API-Gateways an den CloudFront-Edge-Standort und für die Antwort von CloudFront an den Client

Die Teile des Verbindungspfads, die am längsten dauern, sind die Ursache für die Latenzzeit.

Hinweis: Sie können AWS-X-Rayverwenden, um Benutzeranfragen zu verfolgen und zu analysieren,während sie durch Ihre Amazon-API-Gateway-REST-APIs zu den zugrunde liegenden Services gelangen. API-Gateway unterstützt X-Ray-Tracing für alleAPI-Gateway-REST-API-Endpunkttypenin den AWS-Regionen, in denen X-Ray verfügbar ist. Eine Übersicht über alle Regionen, in denen X-Ray verfügbar ist, finden Sie in der Tabelle der AWS-Regionen.

Behebung

Führen Sie das Bashskript curl\ _for\ _latency aus

Um die Dauer der Schritte 1–6 im Verbindungspfadprozess Ihrer API zu bestimmen, führen Sie das Bashskript curl\ _for\ _latency auf GitHub aus.

Wichtig: Stellen Sie sicher, dass Sie die Werte fürURL,HTTP-Methode und****Parameter so ersetzen,dass sie mit den Informationen für Ihre API übereinstimmen.

Das Skript gibt die Zeitspanne zurück, die Ihre API benötigt, um die folgenden Schritte des Verbindungspfads abzuschließen:

  1. Beginn der Verbindung zur DNS-Namensauflösung („time_namelookup“)
  2. Beginn der Verbindung zum TCP-Handshake zur Verbindung mit CloudFront („time_connect“)
  3. Beginn der Verbindung zum SSL-Handshake zur Verbindung mit CloudFront („time_appconnect“)
  4. Beginn der Verbindung zum Senden der Client-HTTP-Anfrage an CloudFront („time_pretransfer“)
  5. Beginn der Verbindung zum ersten von CloudFront übertragenen Byte („time_starttransfer“)
  6. Gesamtzeit für die Anfrage und die Antwort an die API („time_total“)

Nachdem Sie die Ereignisse identifiziert haben, die zur Latenz beitragen, lesen Sie den Abschnitt Wie behebe und reduziere ich die erhöhte Latenz von CloudFront aus?

Überprüfen Sie, wie lange API-Gateway braucht, um die Anfrage zu verarbeiten und an den CloudFront-Edge-Standort zu antworten

Überprüfen Sie dieLatenzmetrikfür Ihre API in derCloudWatch-Konsole. Konfigurieren Sie dann die Einstellungen für das Latenzmetrikdiagramm auf 1-Minuten-Intervall und Maximum, um die längste Verarbeitungszeit innerhalb eines einminütigen Zeitraums anzuzeigen.

Anweisungen finden Sie unter API-Gateway-Metriken in der CloudWatch-Konsole anzeigen.

Überprüfen Sie, wie lange es dauert, bis der Integrationsendpunkt auf die HTTP-Anfrage von API-Gateway antwortet

Überprüfen Sie dieIntegrationLatency-Metrik in derCloudWatch-Konsole. Konfigurieren Sie dann die Einstellungen des IntegrationLatency-Diagramms für 1-Minuten-Intervall und Maximum, um die längste Verarbeitungszeit innerhalb eines einminütigen Zeitraums zu sehen.

-oder-

Wenn Sie die CloudWatch-Protokollierung für Ihre API aktiviert haben,überprüfen Sie die Protokolle auf eine Position, die der folgenden ähnelt:

Received response. Integration latency: 325 ms

Sie können auch $context-Variablen mit Zugriffsprotokollierung hinzufügen, um zusätzliche Latenzprobleme zu beheben.

Anweisungen finden Sie unter Wie aktiviere ich CloudWatch-Logs zur Fehlerbehebung bei meiner API-Gateway-REST-API oder WebSocket-API?

Mit Lambda integrierte Amazon-API-Gateway-Anfragen

Wenn Sie AWS Lambda mit API-Gateway verwenden und eine hohe IntegrationLatency-Metrik sehen,überprüfen Sie die CloudWatch-Protokolle Ihrer Lambda-Funktion. Hohe Latenzzeiten müssen behoben werden, wenn ein mit einer Lambda-Funktion integrierter API-Endpunkt zu lange braucht, um Antworten an einen Client zu senden. Kaltstarts in Lambda-Funktionen werden nicht in der Dauer-Metrik der Funktion aufgezeichnet, sodass die Integrationslatenz Ihrer API länger sein kann als die Dauer der Funktion. Um die Dauer Ihrer Funktion bei einem Kaltstart zu sehen, verwenden Sie AWS-X-Ray.

Weitere Informationen sind unter Wie behebe ich hohe Latenzzeiten in meinen mit Lambda integrierten API-Gateway-Anforderungen?

Überprüfen Sie, wie lange API-Gateway braucht, um dem CloudFront-Edge-Standort zu antworten und wie lange CloudFront braucht, um dem Client zu antworten

Nehmen Sie die Gesamtzeit für die Anfrage und die Antwort an die API („time_total“) und ziehen Sie dann Folgendes ab:

  • Beginn der Verbindung zum Senden der Client-HTTP-Anfrage an CloudFront („time_pretransfer“)
  • Zeit, die das API-Gateway benötigt, um die Anfrage zu verarbeiten und an den CloudFront-Edge-Standort zu antworten (die Latenzmetrik für Ihre API)

Das Ergebnis ist die Zeit, die API-Gateway benötigt, um dem CloudFront-Edge-Standort zu antworten und die Zeit, die CloudFront benötigt, um dem Client zu antworten.


Weitere Informationen

Arbeiten mit Metriken für HTTP-APIs

Dimensionen und Metriken von Amazon-API-Gateway

Überwachung der WebSocket-API-Ausführung mit CloudWatch-Metriken

Wie kann ich Amazon API-Gateway-Logs zur Fehlerbehebung verwenden?

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr