Verstehen und Verwalten von Latenz in APISIX: Ein umfassender technischer Leitfaden
December 29, 2023
Eine häufige Frage von Benutzern dreht sich um die genaue Messung der Latenz in APISIX. Bei der Verwendung von APISIX stellt sich die Frage, wie man ungewöhnlich hohe Latenzzeiten angehen sollte.
In der Realität drehen sich Diskussionen über die Latenzmessung um die Leistung und die Antwortzeiten von API-Anfragen. Das Verständnis dieser Aspekte ist entscheidend, um effiziente API-Dienste zu gewährleisten, insbesondere in B2B-Software, bei der Kunden eine hohe API-Verfügbarkeit und -Leistung fordern. In sensiblen Szenarien wie Handelssoftware in Finanzmärkten kann die Latenz erhebliche Auswirkungen auf Händler haben.
Doch was ist Latenz und was bedeutet Latenz in APISIX? Latenz in APISIX bezieht sich auf die Zeit, die der gesamte Prozess einer API-Anfrage benötigt, vom Senden durch den Client bis zum Empfang der Antwort. Diese Verzögerung umfasst Faktoren wie die Netzwerklatenz des Clients, die interne Verarbeitungszeit von APISIX und die Interaktionslatenz mit Upstream-Diensten.
Um diese Latenzen besser zu verstehen und zu messen, können wir sie in mehrere Schlüsselkomponenten unterteilen.
-
Client-zu-APISIX-Netzwerklatenz: Dies misst die Zeit, die eine Anfrage benötigt, um vom Client zu APISIX zu gelangen. Sie wird durch Faktoren wie die Entfernung zwischen Client und APISIX, Netzwerküberlastung usw. beeinflusst. Spezialisierte Tools können verwendet werden, um diese Zeit zu messen.
-
Interne Verarbeitungszeit von APISIX: Dies umfasst die Zeit, die APISIX benötigt, um verschiedene interne Operationen auszuführen, einschließlich Routing-Entscheidungen, Authentifizierung, Autorisierung und benutzerdefinierter Logik, die durch Plugins implementiert wird.
-
Interaktionslatenz mit Upstream-Diensten: Wenn APISIX mit Upstream-Diensten (typischerweise Backend-Anwendungen oder Microservices) kommuniziert, wird die Zeit, die für diese Interaktion aufgewendet wird, in die Gesamtlatenz einbezogen. Dies umfasst die Zeit, die die Anfrage benötigt, um von APISIX zum Upstream-Dienst zu gelangen, und die Zeit, die die Antwort benötigt, um zurückzukehren.
Die Latenz von APISIX kann mit der Formel berechnet werden: APISIX-Latenz = Gesamtlatenz - Upstream-Interaktionslatenz. Die Gesamtlatenz repräsentiert die Zeit vom Senden der Anfrage bis zum Empfang der Antwort, während sich die Upstream-Interaktionslatenz auf die Kommunikationszeit zwischen APISIX und dem Upstream-Dienst konzentriert.
Hinweis: Unter Linux wird
upstream_response_time
überclock_gettime
(CLOCK_MONOTONIC_COARSE
) gezählt, und bei typischen Werten vonCONFIG_HZ=250
kann es bis zu 4 Millisekunden betragen. Gleichzeitig ist die Zeit zur Berechnung vonrequest_time
keine monotone Zeit, sondern das Ergebnis vongettimeofday()
, also die Zeit gemäß der Wanduhr. Daher kann in einigen Fällenupstream_response_time
leicht größer sein alsrequest_time
.Darüber hinaus kann in schwachen Netzwerkumgebungen oder Szenarien mit großen Datei-Uploads/-Downloads die Latenz zwischen dem Client und dem Gateway zur
apisix_latency
hinzugefügt werden. Bitte analysieren Sie spezifische Probleme fallweise.
Die Latenz von APISIX kann in drei Arten unterteilt werden:
-
Downstream-Latenz: Beinhaltet die Netzwerkübertragungslatenz und Operationen wie das Lesen des Anfragekörpers zwischen APISIX und dem Client. Die Überwachung und Analyse dieser Latenz liefert Einblicke in die Kommunikationsleistung zur Optimierung.
-
NGINX-Latenz: Da APISIX NGINX für die Anfrageverarbeitung und das Routing verwendet, beeinflusst die interne Laufzeit von NGINX die Gesamtlatenz. Spezialisierte Tools können zur Überwachung eingesetzt werden.
-
Lua-Plugin-Code-Ausführungslatenz: Angesichts der zahlreichen Lua-Plugins von APISIX ist die Ausführungszeit jedes Plugins ein wichtiger Faktor. Spezialisierte Tools sind für die Analyse erforderlich.
Um Latenzprobleme zu lösen, kann eine systematische Analyse basierend auf den identifizierten Latenzkomponenten durchgeführt werden. Lösungen umfassen die Optimierung der Netzwerkarchitektur, die Nutzung von CDN für die Client-Netzwerklatenz, die Identifizierung problematischer Lua-Codes in APISIX und die Untersuchung von Interaktionen mit Upstream-Diensten auf potenzielle Probleme. Kontinuierliche Überwachung und Analyse ermöglichen die rechtzeitige Erkennung und Lösung potenzieller Probleme, was eine bessere Optimierung der API-Dienste zur Erfüllung der Anforderungen der Endkunden erleichtert.
Das Verständnis und die Verwaltung der APISIX-Latenz sind entscheidend, um eine optimale API-Leistung zu gewährleisten. Durch eine gründliche Analyse jeder Komponente, kontinuierliche Überwachung und strategische Optimierung können API-Dienste verbessert werden, um die Verfügbarkeit und Reaktionsfähigkeit zu erhöhen und die Bedürfnisse der Endbenutzer effektiv zu erfüllen.
Für QPS- und Latenzvergleichsdaten zwischen APISIX und anderen Gateway-Produkten siehe "Warum ist Apache APISIX das beste API-Gateway?".