Google Cloud Run – Zufällige 504-HTTP-FehlerJava

Java-Forum
Anonymous
 Google Cloud Run – Zufällige 504-HTTP-Fehler

Post by Anonymous »

Wir führen derzeit eine Java 11-Anwendung auf Cloud Run mit Jetty 10 aus und sind auf ein ungewöhnliches Problem gestoßen. Obwohl der Dienst im Allgemeinen reibungslos funktioniert, ist uns aufgefallen, dass ein kleiner Teil der POST-Anfragen, etwa 1.000 von 3.000.000 im letzten Monat verarbeiteten, auf mysteriöse Weise fehlschlägt. Diese fehlgeschlagenen Anfragen führen entweder zu einer fehlerhaften 503-Antwort oder einem 504-Gateway-Timeout-HTTP-Fehler, wobei es sich in der Mehrzahl um 504-Fehler handelt. Seltsamerweise scheinen diese Anfragen im Ruhezustand zu bleiben, ohne von der Instanz zur Ausführung abgeholt zu werden. Letztendlich werden sie erfolgreich auf einer anderen Instanz ausgeführt. Darüber hinaus haben diese fehlgeschlagenen Anfragen dieselbe Instanz-ID (es gibt einige erfolgreiche Anfragen für diese Instanz unter den fehlgeschlagenen, was noch bizarrer ist).
Bezüglich der 503 fehlerhaften Antwortfehler haben wir die Fehlerbehebungsdokumentation von Google konsultiert und Speicherprobleme und Zeitüberschreitungen auf Anwendungsebene ausgeschlossen. Trotz unserer Untersuchung haben wir keine Downstream-Netzwerkengpässe festgestellt und unsere Anfragerate bleibt mit durchschnittlich 15 Anfragen pro Sekunde deutlich unter den von Google festgelegten Grenzwerten.
Bei den 504-Gateway-Timeout-Fehlern zeigt die Meldung an, dass die Anfrage das maximale Anfrage-Timeout erreicht hat, es scheint jedoch, dass diese Anfragen nie tatsächlich die Instanz erreichen, da sie keine Protokolle erzeugen, die auf die Ausführung hinweisen.
Unten finden Sie einige entsprechende Screenshots.
Image

Image

Um diese Probleme zu beheben, haben wir Es wurden mehrere Schritte unternommen:
  • Konfigurierte Bereitschafts- und Lebendigkeitsprüfungen, um den Instanzzustand zu bestimmen, die im Allgemeinen gut funktioniert haben. In einer „fehlerhaften“ Instanz erkannte die Liveness-Prüfung nach einer Stunde ein Problem, was zur Beendigung dieser Instanz führte.
  • Überwachte CPU- und Speicherauslastung, die beide in Ordnung zu sein scheinen, wobei die CPU konstant unter 50 % lag und keine Fehler aufgrund von nicht genügend Arbeitsspeicher auftraten.
  • Sichergestellte ordnungsgemäße Schließung von Ressourcen, wie Google Cloud-Dateispeicher und Redis-Client-Verbindungen, um Ressourcenlecks zu verhindern.
  • Bestätigte Compliance Mit Google Cloud API-Kontingenten stellen wir sicher, dass wir keine Grenzen erreichen.
Cloud Run-Konfiguration

Code: Select all

CPU allocation: CPU is always allocated.
Startup CPU boost: Enabled
Concurrency: 80
Request timeout: 1800 seconds
Execution environment: Second generation
Autoscaling: Enabled
Min instances: 12
Max instances: 100
CPU Limit: 4
Memory Limit: 8GB
Session Affinity: Enabled
HTTP2: Disabled
Darüber hinaus verwenden wir einen VPC-Connector, um den Datenverkehr nur an private IPs weiterzuleiten, und wir bleiben innerhalb aller angegebenen Schwellenwerte.
Wir würden uns sehr über Ihre Erkenntnisse zu den möglichen Ursachen dieser Probleme freuen.
Mit freundlichen Grüßen.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post