Knowledge Center Monthly Newsletter - June 2025
Stay up to date with the latest from the Knowledge Center. See all new Knowledge Center articles published in the last month, and re:Post's top contributors.
Wie behebe ich 504-Fehler, die ich erhalte, wenn ich einen Application Load Balancer verwende?
Ich möchte den ELB_504-Fehler beheben, den ich in meinen Application Load Balancer-Zugriffsprotokollen oder Amazon CloudWatch-Metriken erhalte. Oder ich erhalte einen HTTP 504-Fehler, wenn ich über einen Application Load Balancer eine Verbindung zu meinem Service herstelle.
Kurzbeschreibung
Ein HTTP 504-Fehler tritt auf, wenn bei einem Gateway oder Proxy ein Timeout auftritt. Application Load Balancer HTTP 504-Fehler können aus den folgenden Gründen auftreten:
- Der Load Balancer konnte vor Ablauf des 10-sekündigen Verbindungs-Timeouts keine Verbindung zum Ziel herstellen.
- Der Load Balancer stieß auf einen SSL-Handshake-Timeout, als er eine Verbindung zu einem Ziel herstellte.
Hinweis: Du kannst das 10-sekündige SSL-Handshake-Timeout nicht anpassen. - Der Load Balancer hat eine Verbindung zum Ziel aufgebaut, aber das Ziel hat nicht geantwortet, bevor die Leerlauf-Timeout-Zeit verstrichen ist.
- Das Ziel hat einen Content-Length-Header-Wert zurückgegeben, der größer als der Entitätskörper ist, und beim Load Balancer ist ein Timeout aufgetreten.
- Aufgrund des hohen Verkehrsaufkommens reagierten die Ziele langsamer.
- Das Ziel ist eine AWS Lambda-Funktion und der Service hat nicht reagiert, bevor das Verbindungs-Timeout abgelaufen ist.
Lösung
Überprüfung, ob der Load Balancer Datenverkehr mit registrierten Zielen zulässt
Überprüfe die CloudWatch-Metrik TargetConnectionErrorCount mit der Statistik Summe. Wenn du positive Datenpunkte anstelle von 0 siehst, gibt es Verbindungsprobleme zwischen dem Load Balancer und dem Ziel.
Um diese Probleme zu beheben, überprüfe die Netzwerksicherheitsgruppen, die dem Load Balancer und den Backend-Zielen zugeordnet sind. Stelle sicher, dass die Netzwerksicherheitsgruppen den Datenverkehr zwischen dem Load Balancer und Zielen in beide Richtungen an den Ports für Traffic und Zustandsprüfung zulassen. Vergewissere dich, dass die Netzwerk-Zugriffssteuerungsliste (Netzwerk-ACL) des Subnetzes den Datenverkehr von den Zielen zu den Load Balancer-Knoten an den kurzlebigen Ports (1024-65535) zulässt.
Hinweis: Es hat sich bewährt, bestimmte Sicherheitsgruppenregeln für deinen Application Load Balancer zu verwenden.
Überprüfe deine Load Balancer-Metriken
Um festzustellen, warum deine Ziele als fehlerhaft markiert sind, überprüfe die CloudWatch-Metriken für deinen Application Load Balancer. Wenn es keine HTTPCode_ELB_504_Count-Metrikdaten gibt, haben deine Anwendungsserver die 504-Fehler zurückgegeben, nicht der Load Balancer. Prüfe, ob der Maximalwert für die TargetResponseTime-Metrik häufig den Timeout-Wert überschreitet, da diese Konfiguration zu 504-Fehlern führen kann.
Überprüfe außerdem die folgenden Metriken zur CPU- und Speicherauslastung in deinen Zielen, basierend auf dem Ressourcentyp:
- Überprüfe für Amazon Elastic Compute Cloud (Amazon EC2) die CPUUtilization-Metrik. EC2-Instances senden standardmäßig keine Speichermetriken an CloudWatch, du kannst jedoch eine benutzerdefinierte Speichermetrik senden.
- Überprüfe für Amazon ECS-Aufgaben die Metriken CPUUtilization und MemoryUtilization. Wenn der Wert für einen der beiden Werte 1 (100 %) ist, reagiert die Aufgabe nicht mehr.
- Überprüfe für Lambda-Funktionen die Dauer-Metrik. Wenn die Dauer länger anhält als der Leerlauf-Timeout-Wert des Load Balancers, erhältst du einen Gateway-Timeout-Fehler.
Erhöhe deine Ressourcenverfügbarkeit
Wenn deine Ziele eine hohe CPU-Auslastung haben, reagieren sie möglicherweise nicht mehr.
Erhöhe die folgenden Ressourcen für deine Ziele, um dieses Problem zu lösen:
- Erhöhe für Amazon EC2 die Instance-Größe, damit das Ziel mehr Rechenressourcen nutzen kann.
- Erhöhe für Amazon ECS-Aufgaben die CPU- und Speicherkontingente in deiner Amazon ECS-Aufgabendefinition.
- Erhöhe bei Lambda-Funktionen den Speicher, um die Ressourcenkapazität zu ändern.
Hinweis: Die Menge an CPU und Arbeitsspeicher, die du der Funktion zuweist, ist proportional.
Aktualisiere den Code deiner Anwendung, damit er effizienter auf HTTP-Anfragen reagiert. Stelle sicher, dass die Anwendung nicht länger als den konfigurierten Leerlauf-Timeout-Zeitraum benötigt, um zu antworten. Standardmäßig beträgt das Leerlauf-Timeout für Application Load Balancer 60 Sekunden. Erhöhe bei Bedarf das Leerlauf-Timeout deines Load Balancers.
Hinweis: Es gehört zu den Best Practices, den Wert für das Leerlauf-Timeout nur zu erhöhen, wenn das Ziel eine große Anzahl von Rechenoperationen ausführen muss. Andernfalls empfiehlt es sich, stattdessen den Ressourcenverbrauch in den Zielen zu optimieren.
Skaliere deine Ziele auf der Grundlage deiner Nachfrage
Um die Ziele je nach Bedarf zu skalieren, führe die folgenden Maßnahmen für deine Konfiguration aus:
- Verwende für Amazon EC2 EC2 Auto-Scaling-Gruppen mit einer Skalierungsrichtlinie für Datenverkehrsspitzen.
- Verwende für Amazon ECS Cluster Auto Scaling.
**Hinweis:**Wenn du eine Lambda-Funktion aufrufst, skaliert die Funktion automatisch.
Überprüfe deine externen Abhängigkeiten
Wenn eine Anwendung eine Microservices-Architektur verwendet, wirken sich externe Abhängigkeiten wie Datenbanken oder APIs auf die Zielantwortzeit aus.
Überprüfe die folgenden häufig vorkommenden externen Abhängigkeiten auf Probleme:
- Überprüfe für Amazon Relational Database Service (Amazon RDS)-Datenbanken die CloudWatch-Metriken ReadLatency, WriteLatency und DatabaseConnections.
- Überprüfe für Amazon Simple Queue Service (Amazon SQS)-Warteschlangen die CloudWatch-Metriken ApproximateAgeOfOldestMessage und NumberOfMessagesDelayed.
- Überprüfe für Amazon Simple Storage Service (Amazon S3)-Buckets die CloudWatch-Metriken FirstByteLatency, TotalRequestLatency, 4xxErrors und 5xxErrors.
- Überprüfe für Amazon Cognito-Authentifizierungsdienste die CloudWatch-Metrik TokenRefreshSuccesses und suche nach ThrottlingException-Fehlern.
Gehe wie folgt vor, um die Ursache eines Leistungsengpasses zu ermitteln:
- Füge deinen HTTP-Anfragen einen Server-Timing-Header hinzu, um die Latenz mit CloudWatch zu messen.
- Verwende einen Service wie AWS X-Ray, um eine Beobachtbarkeitslösung in deiner Anwendung zu implementieren.
- Reduziere die physische Entfernung zwischen Ressourcen, um die Latenz zu reduzieren.
Verwende Compute Optimizer, um zukünftige Probleme zu vermeiden
Verwende AWS Compute Optimizer, um Einblicke in deine Nutzung von Amazon EC2-, Amazon ECS- und Lambda-Ressourcen zu erhalten. Der Compute Optimizer erkennt, wenn deine Ressourcenauslastung zu hoch ist, um Timeouts zu vermeiden. Er enthält auch Best Practices zur Optimierung deiner Workloads.
Ähnliche Informationen
Wie behebe ich Authentifizierungsprobleme in meinem Application Load Balancer?
Wie behebe ich 504-Fehler, die auftreten, wenn ich einen Classic Load Balancer verwende?
Ähnliche Videos


Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 5 Monaten
- AWS OFFICIALAktualisiert vor 3 Jahren
- AWS OFFICIALAktualisiert vor 10 Monaten