<ph type="x-smartling-placeholder"></ph>
Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur
Apigee X-Dokumentation. Weitere Informationen
Symptom
Die Clientanwendung ruft den HTTP-Statuscode 502 Bad Gateway
mit Fehlercode ab
protocol.http.TooBigLine
als Antwort auf API-Aufrufe an.
Fehlermeldung
Die Clientanwendung ruft den folgenden Antwortcode ab:
HTTP/1.1 502 Bad Gateway
Außerdem wird möglicherweise die folgende Fehlermeldung angezeigt:
{ "fault":{ "faultstring":"response line size exceeding 2,048", "detail":{ "errorcode":"protocol.http.TooBigLine" } } }
Mögliche Ursachen
Dieser Fehler tritt auf, wenn die Größe der Antwortzeile, die vom Ziel-/Back-End-Server zu Apigee Edge als Teil der HTTP-Antwort ist größer als das zulässige Maximum Limit in Apigee Edge.
Bevor wir uns die möglichen Ursachen für diesen Fehler ansehen, schauen wir uns zunächst an, was die Antwortzeile und wie die Größe überprüft wird.
Informationen zur Antwortzeile
Eine typische HTTP-Antwort besteht aus drei Teilen:
- <ph type="x-smartling-placeholder"></ph> Statuszeile (in Apigee als Antwortzeile bezeichnet)
- ( Satz von HTTP-Headern )
- [ Text ]
Die Antwortzeile besteht aus drei Teilen: der Protokollversion gefolgt von einer numerischen Statuscode und die zugehörige Wortgruppe in Textform an, wie unten dargestellt:
Response-Line = <HTTP-Version> <Status-Code> <Reason-Phrase>
Wenn die Ziel-/Back-End-Serveranwendung eine HTTP-Antwort sendet, wird die erste Zeile,
„Gesendet“ steht für die oben beschriebene Antwortzeile. Darauf folgt der Aufruf,
Header und dem Antworttext bzw. der Nutzlast. Der folgende Beispiel-Screenshot zeigt eine typische
curl
-Anfrage, die Teile Request und Response (zusammen mit den
Antwortzeile).
Informationen zur Größe der Antwortzeile
Im oben erläuterten Beispiel wird auch die start-Zeile (erste Zeile) in der Antwort Response-Line (Antwortzeile) lautet:
HTTP/1.1 200 OK
Diese Antwortzeile hat die Größe
~15 bytes
, da sie15 ASCII characters
enthält. Da dies innerhalb der in Apigee Edge zulässig ist, wird die Antwort ohne jegliche Fehler durch Apigee Edge.- Ähnliches gilt für
faultstring
im Feld Die oben angezeigte Fehlermeldung enthält"response line size exceeding 2,048"
. Dies gibt an, dass die Response-Line (Antwortzeile) in der HTTP-Antwort vom Ziel-/Back-End-Server gesendet hat 2.048 Byte überschritten.
Grundlegendes zu einer großen Antwortzeile
Gemäß der Definition von <ph type="x-smartling-placeholder"></ph> Statuszeile (hier als Antwortzeile bezeichnet) und typischer HTTP-Anfragen und ist die Größe viel kleiner als das definierte Standardlimit von 2 K in Apigee Edge. sodass wir möglicherweise das Limit erreicht haben. Es gibt jedoch einige mögliche Szenarien, in denen Sie diese Beschränkung überschreiten können:
- Der Ziel-/Back-End-Server ist kein HTTP-System. Möglicherweise antwortet er mit einer Nicht-HTTP-Adresse Antwort.
- Der Ziel-/Back-End-Server hat Probleme und sendet eine lange Antwortzeile als Teil der HTTP- Antwort.
Weitere Informationen dazu finden Sie in <ph type="x-smartling-placeholder"></ph> Fehlerprotokoll.http.TooBigLine, „response line size of over 2,048“ erhalten.
Mögliche Ursachen für diesen Fehler:
Ursache | Beschreibung | Anleitungen zur Fehlerbehebung gelten für |
---|---|---|
Größe der Antwortzeile überschreitet das zulässige Limit | Die Größe der Antwortzeile, die vom Ziel-/Back-End-Server im Rahmen des Die HTTP-Antwort an Apigee Edge ist größer als die zulässiges Limit in Apigee Edge | Edge-Nutzer von öffentlichen und privaten Clouds |
Allgemeine Diagnoseschritte
Verwenden Sie eines der folgenden Tools oder Techniken, um diesen Fehler zu diagnostizieren:
API-Monitoring
<ph type="x-smartling-placeholder">So diagnostizieren Sie den Fehler mithilfe von API-Monitoring:
- <ph type="x-smartling-placeholder"></ph> Melden Sie sich in der Apigee Edge-Benutzeroberfläche als Nutzer mit einem Rolle.
Wechseln Sie zu der Organisation, in der Sie das Problem untersuchen möchten.
- Wechseln Sie zum Bereich Analysieren > API-Monitoring > Untersuchen.
- Wählen Sie den Zeitraum aus, in dem Sie die Fehler beobachtet haben.
- Sie können den Proxy-Filter auswählen, um den Fehlercode einzugrenzen.
- Stellen Sie den Fehlercode in den Vergleich mit der Zeit ein.
Wählen Sie eine Zelle mit dem Fehlercode
protocol.http.TooBigLine
als (siehe unten):Sie sehen die Informationen zum Fehlercode
protocol.http.TooBigLine
, wie unten gezeigt:Klicken Sie auf Logs ansehen und maximieren Sie die Zeile für die fehlgeschlagene Anfrage.
- Im Fenster Logs werden die folgenden Details angezeigt:
<ph type="x-smartling-placeholder">
- </ph>
- Statuscode:
502
- Fehlerquelle:
target
- Fehlercode:
protocol.http.TooBigLine
.
- Statuscode:
- Wenn die Fehlerquelle den Wert
target
und den Fehler Code den Wertprotocol.http.TooBigLine
hat, bedeutet das, dass Die HTTP-Antwort vom Ziel-/Back-End-Server weist eine Antwortzeile auf, die größer ist als das maximal zulässige Limit in Apigee Edge.
Trace-Tool
<ph type="x-smartling-placeholder">- Aktivieren Sie die Trace-Sitzung.
und entweder:
<ph type="x-smartling-placeholder">
- </ph>
- Warten Sie, bis der Fehler
502 Bad Gateway
auftritt. oder - Wenn Sie das Problem reproduzieren können, führen Sie den API-Aufruf aus und reproduzieren Sie den Fehler
502 Bad Gateway
.
- Warten Sie, bis der Fehler
- Wählen Sie eine der fehlgeschlagenen Anfragen aus und prüfen Sie den Trace.
- Verschiedene Phasen des Trace durchgehen und ermitteln, wo der Fehler auftritt aufgetreten.
In der Regel sind Fehler in der
flowinfo
-Fehler nach der Phase Anfrage an Zielserver gesendet an:Notieren Sie sich die Fehlerwerte aus dem Trace:
- Fehler:
response line exceeding 2,048
- error.class:
com.apigee.errors.http.server.BadGateway
Dies gibt an, dass Apigee Edge (Message Processor-Komponente) den Fehler als sobald aufgrund einer Antwortzeilengröße die Antwort vom Backend-Server eingeht Überschreitung des zulässigen Grenzwerts.
- Fehler:
Die an den Client gesendete Fehlermeldung finden Sie in der Antwort auf der Seite Antwort gesendet an Client-Phase wie unten gezeigt:
- Notieren Sie sich die Fehlerwerte aus dem Trace:
<ph type="x-smartling-placeholder">
- </ph>
- Fehler:
502 Bad Gateway
. - Fehlerinhalt:
{"fault":{"faultstring":"response line exceeding 2,048","detail":{"errorcode":"protocol.http.TooBigLine"}}}
- Fehler:
Sie können im Trace auch zur Phase AX (Analytics Data Recorded) wechseln. und klicken Sie darauf, um die Fehlerdetails aufzurufen.
Beachten Sie den folgenden Wert:
Anfrageheader Wert X-Apigee-fault-code protocol.http.TooBigLine
X-Apigee-fault-source target
Fehlerinhalt : Text {"fault":{"faultstring":"response line size exceeding 2,048","detail":{"errorcode":"protocol.http.TooBigLine"}}}
NGINX
<ph type="x-smartling-placeholder">So diagnostizieren Sie den Fehler mithilfe von NGINX-Zugriffslogs:
- Als Private Cloud-Nutzer können Sie NGINX-Zugriffslogs für folgende Zwecke verwenden:
die wichtigsten Informationen zu HTTP-
502
-Fehlern ermitteln. Prüfen Sie die NGINX-Zugriffslogs:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
Dabei gilt:ORG, ENV und PORT# werden durch tatsächliche Werte ersetzt.
- Suchen, um zu sehen, ob es während eines bestimmten Zeitraums
502
Fehler gibt (wenn das Problem in der Vergangenheit aufgetreten ist) oder wenn immer noch Anfragen mit502
Wenn Sie
502
-Fehler mit dem X-Apigee-Fehlercode finden dem Wert vonprotocol.http.TooBigLine
entspricht, dann ermitteln Sie, Wert von X-Apigee-fault-source..Der obige Beispieleintrag aus dem NGINX-Zugriffsprotokoll enthält die folgenden Werte für X- Apigee-Fehlercode und X-Apigee-Fehler-Quelle:
Antwortheader Wert X-Apigee-fault-code protocol.http.TooBigLine
X-Apigee-fault-source target
Ursache: Größe der Antwortzeile überschreitet das zulässige Limit.
Diagnose
- Ermitteln Sie den Fehlercode und die Fehlerquelle für den mit der API beobachteten Fehler. Monitoring-, Trace-Tool- oder NGINX-Zugriffslogs wie unter Häufige Diagnoseschritte.
- Wenn die Fehlerquelle den Wert
target
hat, bedeutet dies, dass der Die Größe der Antwortzeile, die von der Ziel-/Back-End-Serveranwendung an Apigee gesendet wird, ist größer als die zulässiges Limit in Apigee Edge. Sie können überprüfen, ob die Größe der Antwortzeile das zulässige Limit von 2 KB überschritten hat, indem Sie eine der folgenden Methoden verwenden:
Fehlermeldung
So führen Sie eine Validierung mithilfe der Fehlermeldung durch:
Wenn Sie Zugriff auf die vollständige Fehlermeldung von Apigee Edge haben, finden Sie weitere Informationen in der
faultstring
Beispiel für eine Fehlermeldung:
"faultstring":"response line size exceeding 2,048"
Das
faultstring
oben gibt an, dass die Größe der Antwortzeile den zulässigen maximal 2 KB groß.Tatsächliche Anfrage
So validieren Sie die Anfrage anhand der tatsächlichen Anfrage:
Wenn Sie Zugriff auf die eigentliche Anfrage an den Ziel-/Back-End-Server haben Anwendung und führen Sie dann die folgenden Schritte aus:
- Überprüfen Sie die Größe der Antwortzeile
- Wenn Sie feststellen, dass die Größe des URI größer ist als die
zulässigen Grenzwert in Apigee Edge, dann ist das die Ursache
das Problem zu lösen.
Beispielantwort des Ziel-/Back-End-Servers:
curl -v http://HOSTALIAS/test
* Trying 3.2.1.4... * TCP_NODELAY set * Connected to <hostalias> (3.2.1.4) port 80 (#0) > GET /test HTTP/1.1 > Host: HOSTALIAS > User-Agent: curl/7.64.1 > Accept: */* > < HTTP/1.1 200 1111…<trimmed>...11111111 < Date: Mon, 26 Jul 2021 07:07:18 GMT < Content-Type: application/json < Content-Length: 269 < Connection: keep-alive < Server: gunicorn/19.9.0 < Access-Control-Allow-Origin: * < Access-Control-Allow-Credentials: true < { <Response Body> } * Connection #0 to host <hostalias> left intact * Closing connection 0
Im obigen Fall ist die Antwortzeile
HTTP/1.1 200 1111…<trimmed>...11111111
größer als 2 KB, d. h. sie enthält mehr als 2.000 ASCII-Zeichen enthalten.Wenn Sie einen anderen Client verwenden, können Sie die Clientprotokolle überprüfen und versuchen, um die Größe der Antwortzeile zu ermitteln, die an Apigee Edge gesendet wird.
Message Processor-Logs
So validieren Sie mit Message Processor-Logs:
<ph type="x-smartling-placeholder">Wenn Sie ein Private Cloud-Nutzer sind, können Sie Message Processor-Logs verwenden, um überprüfen, ob die Größe der Antwortzeile die zulässiges Limit in Apigee Edge.
- Bestimmen Sie die Nachrichten-ID der fehlgeschlagenen Anfrage mithilfe des API-Monitorings, des Trace-Tools oder NGINX-Zugriffsprotokolle, wie unter Allgemeine Diagnoseschritte erläutert.
Suchen Sie im Message Processor-Protokoll nach der Nachrichten-ID:
/opt/apigee/var/log/edge-message-processor/logs/system.log
Zeilen von
system.log
sehen in etwa so aus:2021-07-26 06:45:41,451 org:myorg env:prod api:testtoobigline rev:1 messageid:r-5110240-1 NIOThread@1 ERROR HTTP.CLIENT - HTTPClient$Context$3.onException() : ClientChannel[Connected: Remote:3.2.1.2:80 Local:192.168.205.251:44398]@20592 useCount=1 bytesRead=0 bytesWritten=201 age=144ms lastIO=0ms isOpen=true.onExceptionRead exception: {} com.apigee.errors.http.server.BadGateway: response line size exceeding 2,048 at <snipped> 2021-07-26 06:45:41,451 org:myorg env:prod api:testtoobigline rev:1 messageid:r-5110240-1 NIOThread@1 ERROR ADAPTORS.HTTP.FLOW - AbstractResponseListener.onException() : AbstractResponseListener.onError (HTTPResponse@6a5d6c33, response line size exceeding 2,048)
Der Text
message = response line size exceeding 2,048
oben gibt an, dass die Größe der Antwortzeile mehr als 2 KB beträgt. Dementsprechend wird Apigee Edge löst die Ausnahme aus und gibt einen502
-Statuscode mit Fehlercodeprotocol.http.TooBigline
zu Client-Anwendungen.
Auflösung
<ph type="x-smartling-placeholder">Größe korrigieren
Option 1 [empfohlen]: Korrigieren Sie die Ziel-/Back-End-Serveranwendung, die nicht Antwortzeilen, die größer als das zulässige Limit sind
<ph type="x-smartling-placeholder">- Analysieren Sie den Grund für den Kunden, eine Antwortzeile mit einer größeren Größe zu senden. als unter Limits festgelegt ist.
- Ändern Sie gegebenenfalls Ihre Ziel-/Back-End-Serveranwendung so, sendet eine Antwortzeile, deren Größe kleiner als das zulässige Limit ist.
- Wenn dies wünschenswert ist und Sie eine Antwortzeile mit einer Größe mehr als die Zulässiges Limit haben, fahren Sie mit den nächsten Optionen fort.
CwC
Option 2: CwC-Attribut zum Erhöhen des Antwortzeilenlimits verwenden
<ph type="x-smartling-placeholder">Apigee bietet eine CwC. , mit der die Größenbeschränkung der Antwortzeile erhöht werden kann. Weitere Informationen finden Sie unter <ph type="x-smartling-placeholder"></ph> Legen Sie das Antwortzeilenlimit für den Nachrichtenverarbeiter fest.
<ph type="x-smartling-placeholder">Limits
Apigee erwartet, dass die Clientanwendung und der Backend-Server keine Anfrage-/Antwortzeilen senden deren Größen größer als die für Anfrage-/Antwortzeilenlimit dokumentierte zulässige Beschränkung sind finden Sie unter Apigee Edge Limits.
- Wenn Sie ein Public Cloud-Nutzer sind, ist die Höchstgrenze für Anfragen und Die Größe der Antwortzeilen ist entsprechend der Dokumentation für die Größe der Anfrage-/Antwortzeile in Apigee Edge-Limits.
- Wenn Sie ein Private Cloud-Nutzer sind, haben Sie möglicherweise das Standardhöchstwert Limit für die Größe der Anfrage- und Antwortzeile (auch wenn dies nicht empfohlen wird). Sie können die maximale Größe für Antwortzeilen bestimmen, indem Sie die Anweisungen in So prüfen Sie das aktuelle Limit.
Wie kann ich das aktuelle Limit prüfen?
<ph type="x-smartling-placeholder">
In diesem Abschnitt wird erläutert, wie du bestätigst, dass die Property HTTPResponse.line.limit
wurde mit einem neuen Wert in den Message Processors aktualisiert.
- Suchen Sie auf dem Message Processor-Computer nach der Eigenschaft
HTTPResponse.line.limit
im/opt/apigee/edge-message-processor/conf
und wechseln Sie zu sehen Sie, welcher Wert festgelegt wurde:grep -ri "HTTPResponse.line.limit" /opt/apigee/edge-message-processor/conf
- Das Ergebnis des obigen Befehls sieht wie folgt aus:
/opt/apigee/edge-message-processor/conf/http.properties:HTTPResponse.line.limit=2k
Beachten Sie in der obigen Beispielausgabe, dass das Attribut
HTTPResponse.line.limit
wurde mit dem Wert2k
inhttp.properties
festgelegt.Dies gibt an, dass das Limit für die Größe der Antwortzeile in Apigee for Private konfiguriert ist Cloud ist 2 KB groß.
Wenn Sie weitere Unterstützung vom Apigee-Support benötigen, gehen Sie zu Diagnoseinformationen müssen erfasst werden.
Erfassen von Diagnoseinformationen erforderlich
Erfassen Sie die folgenden Diagnoseinformationen und wenden Sie sich an den Apigee Edge-Support:
Wenn Sie ein Public Cloud-Nutzer sind, geben Sie die folgenden Informationen an:
- Name der Organisation
- Name der Umgebung
- API-Proxy-Name
- Vollständiger curl-Befehl zum Reproduzieren des Fehlers
502
- Ablaufverfolgungsdatei für API-Anfragen
Wenn Sie ein Private Cloud-Nutzer sind, geben Sie die folgenden Informationen an:
- Vollständige Fehlermeldung für fehlgeschlagene Anfragen
- Name der Organisation
- Name der Umgebung
- API-Proxy-Bundle
- Ablaufverfolgungsdatei für fehlgeschlagene API-Anfragen
- Vollständiger
curl
-Befehl zum Reproduzieren des502
-Fehlers NGINX-Zugriffslogs
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
Wo:ORG, ENV und PORT# werden ersetzt durch tatsächliche Werte.
- Systemprotokolle des Message Processor
/opt/apigee/var/log/edge-message-processor/logs/system.log