<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 protocol.http.TooBigHeaders
als Antwort für API
Anrufe.
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 headers size exceeding 25,600", "detail":{ "errorcode":"protocol.http.TooBigHeaders" } } }
Mögliche Ursachen
Dieser Fehler tritt auf, wenn die Gesamtgröße der vom Ziel/Back-End gesendeten Header Server an Apigee Edge als Teil der HTTP-Antwort ist größer als zulässig zulässiges Limit in Apigee Edge.
Mögliche Ursachen für diesen Fehler:
Ursache | Beschreibung | Anleitungen zur Fehlerbehebung gelten für |
---|---|---|
Die Größe der Header in der Antwort überschreitet das zulässige Limit | Die Kopfzeilengröße eines bestimmten Titels oder die Summe der Kopfzeilengrößen aller Header, die vom Ziel-/Back-End-Server als Teil der HTTP-Antwort an Apigee Edge gesendet werden überschreitet das zulässige 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.TooBigHeaders
als (siehe unten):Sie sehen die Informationen zum Fehlercode
protocol.http.TooBigHeaders
, 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.TooBigHeaders
.
- Statuscode:
- Wenn die Fehlerquelle den Wert
target
und den Fehler Code den Wertprotocol.http.TooBigHeaders
hat, bedeutet das, dass Die HTTP-Antwort vom Ziel-/Back-End-Server enthält Header, die größer sind als das 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 sehen Sie diesen Fehler im Ablauf namens Error gleich hinter dem Anfrage an Zielserver gesendet:
Notieren Sie sich die Fehlerwerte aus dem Trace:
- Fehler:
response headers size exceeding 25,600
- error.class:
com.apigee.errors.http.server.BadGateway
Dies gibt an, dass Apigee Edge (Message Processor-Komponente) den Fehler als sobald sie aufgrund einer Header-Größe die Antwort vom Back-End-Server erhält Überschreitung des zulässigen Grenzwerts.
- Fehler:
Der Fehler wird dann in der Antwort an den Client angezeigt. Fehlerantwort, die von Apigee Edge gesendet wurde (siehe unten):
- Notieren Sie sich die Fehlerwerte aus dem Trace. Der obige Beispiel-Trace zeigt Folgendes:
<ph type="x-smartling-placeholder">
- </ph>
- Fehler:
502 Bad Gateway
. - Fehlerinhalt:
{"fault":{"faultstring":"response headers size exceeding 25,600","detail":{"errorcode":"protocol.http.TooBigHeaders"}}}
- Fehler:
Navigieren Sie im Trace zur Phase AX (Analytics Data Recorded). und klicken Sie darauf, um die zugehörigen Details anzuzeigen.
Beachten Sie den folgenden Wert:
Fehlerheader Wert X-Apigee-fault-code protocol.http.TooBigHeaders
X-Apigee-fault-source target
Fehlerinhalt: Text {"fault":{"faultstring":"response headers size exceeding 25,600","detail":{"errorcode":"protocol.http.TooBigHeaders"}}}
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 Bad Gateway
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.
- Nach
502
Fehlern suchen mit Fehlercodeprotocol.http.TooBigHeaders
während eines bestimmten Zeitraums (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.TooBigHeaders
entspricht, dann ermitteln Sie, Wert von X-Apigee-fault-source..Beispielfehler 502 aus dem NGINX-Zugriffsprotokoll:
Der obige Beispieleintrag aus dem NGINX-Zugriffsprotokoll enthält die folgenden Werte für X-Apigee-fault-code und X-Apigee-fault-code
Fehlerheader Wert X-Apigee-fault-code protocol.http.TooBigHeaders
X-Apigee-fault-source target
Ursache: Die Größe der Header in der Antwort überschreitet das zulässige Limit
Diagnose
- Bestimmen Sie den Fehlercode, die Fehlerquelle und die Größe der Antwortnutzlast für die bei Verwendung von API-Überwachungs-, Trace-Tool- oder NGINX-Zugriffsprotokollen, wie unter Häufige Diagnoseschritte.
- Wenn die Fehlerquelle den Wert
target
hat, bedeutet dies, dass Die vom Ziel-/Back-End-Server an Apigee gesendete Antwort enthält Header, die größer sind als das zulässige Limit in Apigee Edge. - Sie können überprüfen, ob die Antwort vom Ziel/Back-End Header enthält, deren Größe
mit einer der folgenden Methoden größer als der zulässige Grenzwert ist:
Fehlermeldung
So führen Sie eine Validierung mithilfe der Fehlermeldung durch:
Wenn Sie Zugriff auf die vollständige Fehlermeldung von Apigee Edge haben, dann Weitere Informationen finden Sie im
faultstring
.faultstring
gibt an, dass Die Größe des Antwortheaders hat das zulässige Limit überschritten.Beispiel für eine Fehlermeldung:
"faultstring":"response headers size exceeding 25,600"
Beachten Sie in der obigen Fehlermeldung in
faultstring
, dass das Attribut Die Antwort enthält Header, deren Gesamtgröße das zulässige Limit überschreitet.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, Führen Sie dann die folgenden Schritte aus:
- Wenn Sie ein Nutzer einer öffentlichen Cloud/Private Cloud sind, stellen Sie eine Anfrage direkt zum Back-End-Server vom Back-End-Server selbst oder einem anderen Maschine, von der aus Sie die Anfrage an das Back-End senden dürfen Server.
- Als Private Cloud-Nutzer können Sie die Anfrage auch an vom Back-End-Server von einem der Message Processors.
- Untersuchen Sie die vom Back-End-Server empfangene Antwort und insbesondere Gesamtgröße der in der Antwort übergebenen Header zu berechnen und zu überprüfen.
Wenn Sie feststellen, dass die Größe der Header in der Antwortnutzlast überschreitet das zulässige Limit in Apigee Edge, dann ist das die Ursache des Problems.
Beispielantwort des Zielservers:
curl -v https://TARGET_SERVER_HOST/test
* About to connect() to 10.1.0.10 port 9000 (#0) * Trying 10.1.0.10... * Connected to 10.1.0.10 (10.1.0.10) port 9000 (#0) > GET /test HTTP/1.1 > User-Agent: curl/7.29.0 > Host: 10.1.0.10:9000 > Accept: */* < < HTTP/1.1 200 OK < Accept-Ranges: bytes < Content-Length: 0 < Content-Type: text/plain; charset=utf-8 < Last-Modified: Tue, 20 Jul 2021 09:23:56 GMT
< Testheader1: XVlBzgba—-<snipped>---THctcuAx < Testheader2: hxKQFDaFpLSj—-<snipped>---FbcXoEFfRsWxP
< Date: Fri, 23 Jul 2021 09:51:22 GMT < * Connection #0 to host 10.1.0.10 left intactIm obigen Beispiel sind
Testheader1
undTestheader2
haben eine höhere Größe. Das ist der Grund für diesen Fehler, da er die zulässige Grenze in Apigee Edge
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 Validieren, ob die Größe der Antwortheader zulässiges Limit in Apigee Edge.
Prüfen Sie die Message Processor-Logs:
/opt/apigee/var/log/edge-message-processor/logs/system.log
- Suchen Sie nach
502
-Fehlern während eines bestimmten Dauer (wenn das Problem in der Vergangenheit aufgetreten ist) oder ob es Anfragen schlagen immer noch mit502
fehl. Sie können den folgenden Suchstring verwenden:grep -ri "response headers size exceeding"
- Sie sehen Zeilen von
system.log
, die der folgenden ähneln. Die Größe der Antwortheader kann in Ihrem Fall variieren:2021-07-23 08:25:12,307 org:myorg env:prod api:bigheadertest rev:1 messageid:r23ijb1b-1 NIOThread@1 ERROR HTTP.CLIENT - HTTPClient$Context$3.onException() : ClientChannel[Connected: Remote:3.7.1.1:9000 Local:192.168.2.1:56098]@8414 useCount=1 bytesRead=0 bytesWritten=207 age=640ms lastIO=0ms isOpen=true.onExceptionRead exception: {} com.apigee.errors.http.server.BadGateway: response headers size exceeding 25,600 2021-07-23 08:25:12,307 org:myorg env:prod api:bigheadertest rev:1 messageid:r23ijb1b-1 NIOThread@1 ERROR ADAPTORS.HTTP.FLOW - AbstractResponseListener.onException() : AbstractResponseListener.onError (HTTPResponse@31f3ef88, response headers size exceeding 25,600)
-
Sobald der Message Processor die Antwort vom Back-End/Ziel erhält Server und stellt fest, dass die Gesamtgröße der Header größer als 25 KB ist. stoppt er, und es wird folgender Fehler ausgegeben:
response headers size exceeding 25,600
Impliziert, dass die Gesamtheadergröße mehr als 25 KB beträgt und Apigee gibt den Fehler aus, wenn die Größe beginnt, das Limit von 25 KB mit Fehlercode zu überschreiten als
protocol.http.TooBigHeaders
Auflösung
Größe korrigieren
Option 1 [empfohlen]: Korrigieren Sie die Zielserveranwendung, damit die Headergröße nicht gesendet wird Überschreitung des Apigee-Limits
<ph type="x-smartling-placeholder">- Analysieren Sie den Grund für den jeweiligen Zielserver, um die Größe des Antwortheaders genauer zu senden als unter Limits festgelegt ist.
- Wenn dies nicht erwünscht ist, ändern Sie Ihre Backend-Serveranwendung so, dass sie Antwortheader, die unter dem zulässigen Limit in Apigee Edge.
- Prüfen Sie, ob die Header-Informationen als Teil des Antworttexts gesendet werden können.
- Senden Sie nach Möglichkeit umfassende Informationen, die Sie im Rahmen des -Header im Antworttext ein. So stellen Sie sicher, dass Sie Header-Limit.
CwC
Option 2 : CwC-Attribut verwenden, um die Größenbeschränkung für den Antwortheader zu erhöhen
<ph type="x-smartling-placeholder">Apigee bietet eine CwC-Attribut enthält, mit dem die Größenbeschränkung für Antwortheader erhöht werden kann. Details finden Sie unter <ph type="x-smartling-placeholder"></ph> Limits für den Message Processor konfigurieren
<ph type="x-smartling-placeholder">Limits
Apigee erwartet, dass die Clientanwendung und der Backend-Server keine Headergrößen, die laut Dokumentation über dem zulässigen Grenzwert liegen für Anfrage/Antwort-Headergröße in Apigee Edge-Beschränkungen.
- Wenn Sie ein Public Cloud-Nutzer sind, ist die Höchstgrenze für Die Größe der Anfrage- und Antwortheader ist wie für die Größe des Anfrage-/Antwort-Headers in Apigee Edge-Limits.
- Wenn Sie ein Private Cloud-Nutzer sind, haben Sie möglicherweise das Standardhöchstwert Größenbeschränkung für Anfrage- und Antwortheader (auch wenn dies nicht empfohlen wird). Sie können die maximale Größe für Antwortheader ermitteln, indem Sie die Anweisungen unter 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.headers.limit
wurde mit einem neuen Wert in den Message Processors aktualisiert.
- Suchen Sie auf dem Message Processor-Computer nach der Eigenschaft
HTTPResponse.headers.limit
im/opt/apigee/edge-message-processor/conf
und wechseln Sie zu sehen Sie, welcher Wert festgelegt wurde:grep -ri "HTTPResponse.headers.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.headers.limit=25k
In der Beispielausgabe oben ist das Attribut
HTTPResponse.headers.limit
wurde mit dem Wert25k
inhttp.properties
festgelegt.Dies gibt an, dass das Limit für die Antwortnutzlastgröße in Apigee for Private konfiguriert ist Cloud ist 25 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 des502
-Fehlers - Ablaufverfolgungsdatei für API-Anfragen
- Vollständige Ausgabe der Antwort vom Ziel-/Back-End-Server zusammen mit der Größe der Header
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 - Vollständige Ausgabe der Antwort vom Ziel-/Back-End-Server zusammen mit der Größe der Header
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