414 Anfrage-URI zu lang – TooBigLine

<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:

  1. <ph type="x-smartling-placeholder"></ph> Anfragezeile
  2. ( Satz von HTTP-Headern )
  3. [ 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

  1. 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.

  2. 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:

  1. <ph type="x-smartling-placeholder"></ph> Melden Sie sich in der Apigee Edge-Benutzeroberfläche als Nutzer mit einem Rolle.
  2. Wechseln Sie zu der Organisation, in der Sie das Problem untersuchen möchten.

  3. Wechseln Sie zum Bereich Analysieren > API-Monitoring > Untersuchen.
  4. Wählen Sie den Zeitraum aus, in dem Sie die Fehler beobachtet haben.
  5. Stellen Sie den Fehlercode in den Vergleich mit der Zeit ein.
  6. Wählen Sie eine Zelle mit dem Fehlercode protocol.http.TooBigLine und Statuscode 414, wie unten gezeigt:

    ( Größeres Bild ansehen)

  7. Sie sehen die Informationen zum Fehlercode protocol.http.TooBigline wie unten dargestellt:

    ( Größeres Bild ansehen)

  8. Klicken Sie auf Logs ansehen und maximieren Sie die Zeile für die fehlgeschlagene Anfrage:

    ( Größeres Bild ansehen)

  9. Im Fenster Logs werden die folgenden Details angezeigt:

    • Statuscode: 414
    • Fehlerquelle: apigee
    • Fehlercode: protocol.http.TooBigLine.
    • Anfragelänge(Byte): 7244 (> 7KB)
  10. Wenn die Fehlerquelle den Wert apigee oder MP hat, Fehlercode hat den Wert protocol.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:

  1. Als Private Cloud-Nutzer können Sie NGINX-Zugriffslogs für folgende Zwecke verwenden: die wichtigsten Informationen zu HTTP-414-Fehlern ermitteln.
  2. 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.

  3. 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 mit 414
  4. Wenn Sie 414-Fehler mit dem X-Apigee-Fehlercode finden dem Wert von protocol.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

  1. 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.
  2. Wenn die Fehlerquelle den Wert apigee oder MP 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.
  3. 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:

    1. Überprüfen Sie die Größe des in der Anfrage übergebenen URI.
    2. 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.

    1. Prüfen Sie die Message Processor-Logs:

      /opt/apigee/var/log/edge-message-processor/logs/system.log

    2. 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 mit 414 fehl. Sie können die folgenden Suchzeichenfolgen verwenden.
      grep -ri "exceeding"
      
      grep -ri "RequestURITooLong"
      
    3. 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 Ausnahme com.apigee.errors.http.user.RequestURITooLong und Retouren Statuscode 414 mit Fehlercode protocol.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">
  1. Analysieren Sie den Grund dafür, warum der jeweilige Client eine Anfrage-URI-Größe um mehr als die in Limits definiert ist.
  2. Ä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
    
  3. 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.

  1. 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.
  2. 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.

  1. 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
    
  2. Das Ergebnis des obigen Befehls sieht wie folgt aus:
    /opt/apigee/edge-message-processor/conf/http.properties:HTTPRequest.line.limit=7k
    
  3. In der Beispielausgabe oben ist das Attribut HTTPRequest.line.limit wurde mit dem Wert 7k in http.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 des 414-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 des 414-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