<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 414 Request-URI Too Long
mit
Fehlercode protocol.http.TooBigLine
als Antwort für API-Aufrufe.
Fehlermeldung
Die Clientanwendung ruft den folgenden Antwortcode ab:
HTTP/1.1 414 Request-URI Too Long
Außerdem wird möglicherweise die folgende Fehlermeldung angezeigt:
{ "fault":{ "faultstring":"request line size exceeding 7,168", "detail":{ "errorcode":"protocol.http.TooBigLine" } } }
Hinweis: Die faultstring
in der Fehlermeldung oben enthält das zulässige Limit.
für die Anfragezeile in Apigee Edge, die 7168 bytes
(7 KB) ist.
Mögliche Ursachen
Dieser Fehler tritt auf, wenn die Größe der Anfragezeile, die von der Clientanwendung an Apigee Edge gesendet wird, im Rahmen der HTTP-Anfrage überschreitet das zulässige Limit in Apigee Edge.
Bevor wir uns die möglichen Ursachen für diesen Fehler ansehen, schauen wir uns zunächst an, was in der Anfragezeile und wie die Größe überprüft wird.
Informationen zur Anfragezeile
Eine typische HTTP-Anfrage besteht aus drei Teilen:
- <ph type="x-smartling-placeholder"></ph> Anfragezeile
- ( Satz von HTTP-Headern )
- [ Text ]
Die Anfragezeile besteht wie unten dargestellt aus drei Teilen.
Request-Line = <Method> <Request-URI> <HTTP-Version>
Wenn die Clientanwendung eine HTTP-Anfrage an einen Server sendet, wird in der ersten Zeile, die der Server die oben beschriebene Anfragezeile enthält. Darauf folgt der Aufruf, und den Anfragetext bzw. die Nutzlast.
Der folgende Beispielscreenshot zeigt eine typische curl
-Anfrage, die Request
(zusammen mit der Anfragezeile) und Response (Antwort).
Informationen zur Größe der Anfragezeile
- Im oben beschriebenen Beispiel enthält die start-Zeile (erste Zeile) der Anfrage ebenfalls
Anfragezeile:
GET /test/ HTTP/1.1
Die Größe der Anfragezeile beträgt
~19 bytes
, da sie folgende Elemente enthält:19 ASCII characters
. Da dies innerhalb der in Apigee Edge zulässig ist, wird die Anfrage ohne Fehler verarbeitet. und Sie erhalten eine erfolgreiche Antwort. - Gleiches gilt für die
faultstring
im Fehlermeldung oben angezeigt. Sie enthält"request line size exceeding 7,168"
. Dies gibt an, dass die Anfragezeile in der HTTP-Anfrage des Clients überschritten wurde. 7.168 Byte.
Mögliche Ursachen für diesen Fehler:
Ursache | Beschreibung | Anleitungen zur Fehlerbehebung gelten für |
---|---|---|
Größe der Anfragenutzlast überschreitet das zulässige Limit | Die Größe des Anfrage-URI, der von der Clientanwendung im HTTP-Format gesendet wird Anfrage an Apigee Edge ist größer als 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.
- Stellen Sie den Fehlercode in den Vergleich mit der Zeit ein.
- Wählen Sie eine Zelle mit dem Fehlercode
protocol.http.TooBigLine
und Statuscode414
, wie unten gezeigt: Sie sehen die Informationen zum Fehlercode
protocol.http.TooBigline
wie unten dargestellt:Klicken Sie auf Logs ansehen und maximieren Sie die Zeile für die fehlgeschlagene Anfrage:
Im Fenster Logs werden die folgenden Details angezeigt:
- Statuscode:
414
- Fehlerquelle:
apigee
- Fehlercode:
protocol.http.TooBigLine
. - Anfragelänge(Byte):
7244 (> 7KB)
- Statuscode:
- Wenn die Fehlerquelle den Wert
apigee
oderMP
hat, Fehlercode hat den Wertprotocol.http.TooBigLine
und Request-Length mehr als 7 KB beträgt, bedeutet dies, dass die HTTP-Anfrage vom Client hat einen Anfrage-URI, der größer als zulässiges Limit in Apigee.
Trace-Tool
<ph type="x-smartling-placeholder">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-
414
-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
414
Fehler gibt (wenn das Problem in der Vergangenheit aufgetreten ist) oder wenn immer noch Anfragen mit414
Wenn Sie
414
-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-fault-code und X-Apigee-fault-code
Antwortheader Wert X-Apigee-fault-code protocol.http.TooBigLine
X-Apigee-fault-source policy
Beachten Sie die Anforderungslänge:
7244
(7,244 KB > zulässiges Limit)
Ursache: Die Größe der Anfragenutzlast überschreitet das zulässige Limit
Diagnose
- Bestimmen Sie den Fehlercode, die Fehlerquelle und die Größe der Anfragelänge für die bei der Verwendung von API-Überwachungs-, Trace-Tool- oder NGINX-Zugriffsprotokollen, wie unter Häufige Diagnoseschritte.
- Wenn die Fehlerquelle den Wert
apigee
oderMP
hat, ist dies gibt an, dass die von der Clientanwendung an Apigee gesendete Anfragegröße größer ist als die zulässiges Limit in Apigee Edge. - Sie können überprüfen, ob die Größe der Anfragezeile die zulässige Grenze von 7 KB überschritten hat, indem Sie einen 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, dann Weitere Informationen finden Sie im
faultstring
.faultstring
gibt an, dass Die Größe der Anfragezeile überschreitet das zulässige Limit von 7 KB.Beispiel für eine Fehlermeldung:
"faultstring":"request line size exceeding 7,168"
Tatsächliche Anfrage
So validieren Sie die Anfrage anhand der tatsächlichen Anfrage:
Wenn Sie Zugriff auf die eigentliche Anfrage der Clientanwendung haben, Führen Sie dann die folgenden Schritte aus:
- Überprüfen Sie die Größe des in der Anfrage übergebenen URI.
Wenn Sie feststellen, dass die Größe des URI größer ist als die zulässigen Grenzwert in Apigee Edge, um die Ursache des Problems zu finden.
Beispielanfrage:
curl http://<hostalias>/testtoobigline?_qparam=000000000000000000……..000000<trimmed> -k -X POST
Im obigen Fall ist der Wert des Suchparameters
qparam
größer als 7 KB ist, also mehr als 7.000 ASCII-Zeichen enthält.Wenn Sie einen anderen Client verwenden, können Sie die Clientprotokolle die Größe der Anfragezeile 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 Anfragezeile die 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
414
Fehlern während eines bestimmten Dauer (wenn das Problem in der Vergangenheit aufgetreten ist) oder ob es Anfragen schlagen immer noch mit414
fehl. Sie können die folgenden Suchzeichenfolgen verwenden.grep -ri "exceeding"
grep -ri "RequestURITooLong"
- Zeilen von
system.log
sehen in etwa so aus:2021-07-12 08:53:31,461 NIOThread@0 ERROR ADAPTORS.HTTP.FLOW - AbstractRequestListener.onException() : Request:null, uri:null, message Id:null, exception:com.apigee.errors.http.user.RequestURITooLong{ code = protocol.http.TooBigLine, message = request line size exceeding 7,168, associated contexts = []}, context:Context@366f4217 input=ClientInputChannel(SSLClientChannel[Accepted: Remote:192.168.195.90:8443 Local:192.168.67.23:34256]@301912 useCount=1 bytesRead=0 bytesWritten=45849 age=2254670ms lastIO=0ms isOpen=true)
Der Text
message = request line size exceeding 7,168
im Feld gibt an, dass die Größe des Anfrage-URI mehr als 7 KB beträgt. Daher wirft Apigee Edge die Ausnahmecom.apigee.errors.http.user.RequestURITooLong
und Retouren Statuscode414
mit Fehlercodeprotocol.http.TooBigline
an Client-Anwendungen.
Auflösung
<ph type="x-smartling-placeholder">
Größe korrigieren
Option 1 [empfohlen]: Korrigieren Sie die Clientanwendung, damit keine Anfrage-URI über dem zulässigen Limit gesendet wird
<ph type="x-smartling-placeholder">- Analysieren Sie den Grund dafür, warum der jeweilige Client eine Anfrage-URI-Größe um mehr als die in Limits definiert ist.
Ändern Sie gegebenenfalls Ihre Clientanwendung so, dass sie den Anfrage-URI sendet. die Größe unter dem zulässigen Grenzwert liegt.
Im oben beschriebenen Beispiel können Sie das Problem beheben, indem Sie die lange Abfrage in den Anfragetext bzw. die Nutzlast einfügen, anstatt ihn als Teil des wie unten dargestellt:
curl https://<host>/testtoobigline -k -X GET -d '{_qparam=000000000000000000<trimmed>}' -v
- Wenn dies wünschenswert ist und Sie einen URI senden möchten, der über dem zulässigen Grenzwert liegt, gehen Sie zur .
CwC
Option 2 : CwC-Attribut verwenden, um das Limit für die Anfragezeilen zu erhöhen
<ph type="x-smartling-placeholder">Apigee bietet eine CwC können Sie das Limit für die Anfragezeile erhöhen. Details finden Sie unter <ph type="x-smartling-placeholder"></ph> Limit für Anfragezeilen im Message Processor festlegen
<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 Anfragezeilen ermitteln, indem Sie der Anleitung 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 HTTPRequest.line.limit
wurde mit einem neuen Wert in den Message Processors aktualisiert.
- Suchen Sie auf dem Message Processor-Computer nach der Eigenschaft
HTTPRequest.line.limit
im/opt/apigee/edge-message-processor/conf
und wechseln Sie zu sehen Sie, welcher Wert festgelegt wurde:grep -ri "HTTPRequest.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:HTTPRequest.line.limit=7k
In der Beispielausgabe oben ist das Attribut
HTTPRequest.line.limit
wurde mit dem Wert7k
inhttp.properties
festgelegt.Dies gibt an, dass das in Apigee for Private konfigurierte Limit für die Größe der Anfragezeile Cloud ist 7 KB.
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 des414
-Fehlers - 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 des414
-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