Fehlerbehebung beim Classic Load Balancer: HTTP-Fehler - ELB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Fehlerbehebung beim Classic Load Balancer: HTTP-Fehler

Die HTTP-Methode (auch als Verb bezeichnet) bestimmt die Aktion, die auf die Ressource angewendet wird, die eine HTTP-Anforderung empfängt. Die Standardmethoden für HTTP-Anfragen sind in RFC 2616, Methodendefinitionen definiert. Zu den Standardmethoden zählen GET, HEAD, POST, PUT und OPTIONS. Einige Webanwendungen erfordern Methoden (und führen diese manchmal ein), die Erweiterungen der HTTP/1.1-Methoden darstellen. Einige Beispiele für erweiterte HTTP-Methoden sind PATCH, REPORT, MKCOL, PROPFIND, MOVE und LOCK. ELB akzeptiert alle standardmäßigen und nicht standardmäßigen HTTP-Methoden.

HTTP-Anforderungen und -Antworten verwenden Header-Felder, um Informationen per HTTP-Nachricht zu senden. Header-Felder sind durch einen Doppelpunkt getrennte Name/Wert-Paare, die durch eine Zeilenumschaltung und einen Zeilenvorschub getrennt sind. Ein Standardsatz von HTTP-Header-Feldern ist in RFC 2616, Nachrichten-Header definiert. Weitere Informationen finden Sie unter HTTP-Header und Classic Load Balancer.

Wenn ein Load Balancer eine HTTP-Anfrage empfängt, überprüft er diese auf falsch formatierte Anforderungen und die Länge der Methode. Der gesamte Länge der Methode in einer HTTP-Anforderung an einen Load Balancer darf 127 Zeichen nicht überschreiten. Wenn die HTTP-Anfrage beide Prüfungen besteht, sendet der Load Balancer die Anfrage an die EC2 Instance. Falls das Methodenfeld in der Anforderung falsch formatiert ist, reagiert der Load Balancer mit einem HTTP 400: BAD_REQUEST-Fehler. Wenn die Länge der Methode in der Anforderung 127 Zeichen überschreitet, reagiert der Load Balancer mit einem HTTP 405: METHOD_NOT_ALLOWED-Fehler.

Die EC2 Instance verarbeitet eine gültige Anfrage, indem sie die Methode in der Anfrage implementiert und eine Antwort an den Client zurücksendet. Ihre Instances müssen so konfiguriert werden, dass sie unterstützte und nicht unterstützte Methoden verarbeiten können.

Nachfolgend finden Sie mögliche Fehlermeldungen von Ihrem Load Balancer, die potenziellen Ursachen und was Sie tun müssen, um das Problem zu lösen.

HTTP 400: BAD_REQUEST

Description: Gibt an, dass der Client eine fehlerhafte Anforderung gesendet hat.

Cause 1 (Ursache 1): Der Client hat eine falsch formatierte Anforderung gesendet, die die HTTP-Spezifikationen nicht erfüllt. Beispielsweise darf eine Anforderung keine Leerzeichen in der URL haben.

Ursache 2: Der Client hat die HTTP CONNECT-Methode verwendet, die von ELB nicht unterstützt wird.

Solution: Stellen Sie direkt eine Verbindung mit der Instance her und erfassen Sie die Details der Client-Anforderung. Überprüfen Sie die Header und die URL auf falsch formatierte Anforderungen. Überprüfen Sie, ob die Anforderung die HTTP-Spezifikationen erfüllt. Vergewissern Sie sich, dass HTTP-CONNECT nicht verwendet wird.

HTTP 405: METHOD_NOT_ALLOWED

Description: Gibt an, dass die Methodenlänge ungültig ist.

Cause: Die Länge der Methode im Header der Anforderung überschreitet 127 Zeichen.

Solution: Überprüfen Sie die Länge der Methode.

HTTP 408: Request Timeout

Description: Zeigt an, dass der Client die Anforderung storniert oder keine vollständige Anforderung gesendet hat.

Cause 1: Eine Netzwerkunterbrechung oder eine fehlerhafte Anforderungskonstruktion, z. B. ein nur teilweise angegebener Header; die angegebene Inhaltsgröße passt nicht zum tatsächlich übertragenen Inhalt usw.

Solution 1: Untersuchen Sie den Code, der die Anfrage stellt, und versuchen Sie ihn direkt an Ihre registrierten Instances zu senden (oder an eine Entwicklungs-/Testumgebung), in der Sie mehr Kontrolle über die tatsächliche Anforderung haben.

Cause 2: Verbindung zum Client wurde geschlossen (Load Balancer konnte keine Antwort senden)

Solution 2: Überprüfen Sie, ob der Client nicht die Verbindung schließt, bevor eine Antwort gesendet wird, indem Sie einen Packet-Sniffer auf dem Computer verwenden, von dem die Anforderung stammt.

HTTP 502: Bad Gateway

Description: Gibt an, dass der Load Balancer die Antwort von einer registrierten Instance nicht analysieren konnte.

Cause: Falsch formatierte Antwort von der Instance oder möglicherweise ein Problem mit dem Load Balancer.

Solution: Überprüfen Sie, ob die Antwort von der Instance den HTTP-Spezifikationen entspricht. Rufen Sie das AWS -Support Center auf, um Unterstützung zu erhalten.

HTTP 503: Service Unavailable

Description: Zeigt an, dass der Load Balancer oder die registrierten Instances den Fehler verursachen.

Cause 1: Nicht genügend Kapazität auf dem Load Balancer für die Verarbeitung der Anforderung.

Solution 1: Dies ist ein vorübergehendes Problem und sollte nicht länger als ein paar Minuten dauern. Falls es weiterhin besteht, rufen Sie das AWS -Support Center auf, um Unterstützung zu erhalten.

Ursache 2: Es sind keine registrierten Instances vorhanden.

Solution 2: Registrieren Sie mindestens eine Instance in jeder Availability Zone, in welcher der Load Balancer laut Konfiguration antworten soll. Überprüfen Sie dies, indem Sie sich die HealthyHostCount Metriken unter ansehen CloudWatch. Wenn Sie nicht sicherstellen können, dass eine Instance in einer Availability Zone registriert ist, empfehlen wir eine zonenübergreifende Lastverteilung. Weitere Informationen finden Sie unter Konfigurieren des zonenübergreifenden Load Balancing für Ihren Classic Load Balancer.

Ursache 3: Es sind keine fehlerfreien Instances vorhanden.

Solution 3: Stellen Sie sicher, dass Sie in jeder Availability Zone über fehlerfreie Instances verfügen, in welcher der Load Balancer laut Konfiguration antworten soll. Überprüfen Sie dies anhand der Metrik HealthyHostCount.

Ursache 4: Die Anstiegswarteschlange ist voll.

Lösung 4: Stellen Sie sicher, dass die Kapazität Ihrer Instances zur Verarbeitung dieser Anforderung ausreicht. Überprüfen Sie dies anhand der Metrik SpilloverCount.

HTTP 504: Gateway Timeout

Description: Gibt an, dass der Load Balancer eine Verbindung geschlossen hat, da eine Anforderung nicht innerhalb des Zeitraums der Leerlaufzeitüberschreitung abgeschlossen wurde.

Cause 1: Die Anwendung benötigt für die Antwort länger als das konfigurierte Leerlaufzeitlimit.

Solution 1: Überwachen Sie die Metriken HTTPCode_ELB_5XX und Latency. Wenn es eine Erhöhung dieser Metriken gibt, kann dies daran liegen, dass die Anwendung nicht innerhalb des Leerlaufzeitlimits antwortet. Einzelheiten zu den Anfragen, bei denen das Timeout auftritt, finden Sie, wenn Sie die Zugriffsprotokolle auf dem Load Balancer aktivieren und die 504 Antwortcodes in den von ELB generierten Protokollen überprüfen. Falls erforderlich, können Sie Ihre Kapazität oder das konfigurierte Leerlaufzeitlimit erhöhen, sodass langwierige Vorgänge (z. B. Hochladen einer großen Datei) abgeschlossen werden können. Weitere Informationen finden Sie unter Konfigurieren des Leerlaufverbindungszeitlimits für Ihren Classic Load Balancer und Wie behebe ich Probleme mit hoher ELB-Latenz?

Ursache 2: Registrierte Instances schließen die Verbindung zu ELB.

Lösung 2: Aktivieren Sie die Keep-Alive-Einstellungen auf Ihren EC2 Instances und stellen Sie sicher, dass das Keep-Alive-Timeout größer ist als die Leerlauf-Timeout-Einstellungen Ihres Load Balancers.