HTTP 5xx-Fehler beim Seiten-Rendering in Adobe Experience Manager as a Cloud Service
In Adobe Experience Manager as a Cloud Service kann das Seiten-Rendering langsam werden oder nicht mehr reagieren, wenn externe HTTP-Aufrufe Threads für die Verarbeitung von Anfragen blockieren. Unter erhöhtem Traffic können blockierte Threads zu einer Thread-Erschöpfung und HTTP-5xx-Fehlern für Site-Besucher führen. Um dieses Problem zu beheben, optimieren Sie externe HTTP-Aufrufe, implementieren Sie das Caching und konfigurieren Sie effektive Zeitüberschreitungseinstellungen.
Beschreibung description
Umgebung
Adobe Experience Manager (AEM) as a Cloud Service (alle Versionen)
Symptome
- Erhöhte HTTP 5xx-Fehler (z. B. 503 oder 504) für Site-Besucher
- Langsame oder nicht reagierende Produktseiten, insbesondere während Traffic-Spitzen
- Anwendungsprotokolle können beim Aufruf externer Services Fehler bei Verbindungsüberschreitungen anzeigen
Ursache
Wenn die Anwendung synchrone externe HTTP-Aufrufe (z. B. für Produkt- oder SKU-Daten) während des Seiten-Renderings direkt über den Thread für die Anfragebearbeitung tätigt und diese Aufrufe nicht zwischengespeichert werden oder keine effektiven Zeitüberschreitungswerte aufweisen, können Anfrage-Threads beim Warten auf langsame externe Antworten blockiert werden. Unter erhöhtem Traffic kann dies die verfügbaren Anfrage-Threads erschöpfen, was dazu führen kann, dass neue Anfragen mit HTTP-5xx-Fehlern fehlschlagen.
Lösung resolution
Gehen Sie wie folgt vor, um das Problem zu beheben.
-
Überprüfen Sie Ihren Anwendungs-Code, um alle synchronen externen HTTP-Aufrufe zu identifizieren, die während des Seiten-Renderings durchgeführt werden, insbesondere diejenigen, die in Threads mit Anforderungsbehandlung ausgeführt werden.
-
Refaktorieren Sie Code nach Möglichkeit, um externe HTTP-Aufrufe asynchron oder außerhalb des Hauptanfrage-Threads durchzuführen.
-
Implementieren Sie die Zwischenspeicherung für externe Daten (z. B. Produkt- oder SKU-Informationen), um wiederholte Aufrufe während des Seiten-Renderings zu vermeiden. Stellen Sie sicher, dass die Logik zur Cache-Invalidierung mit Ihren Anforderungen an die Datenfrische übereinstimmt.
-
Konfigurieren Sie effektive Verbindungs- und Lese-Timeouts (Socket) für alle HTTP-Clients, die für externe Aufrufe verwendet werden. Zum Beispiel mit Apache HttpClient:
code language-none RequestConfig config = RequestConfig.custom() .setConnectTimeout(5000) .setSocketTimeout(5000) .build();Passen Sie die Zeitüberschreitungswerte entsprechend Ihrem Anwendungsfall an.
-
Überwachen Sie die Nutzung des Anforderungs-Thread-Pools in Ihrer AEM-Umgebung. Richten Sie Warnungen für hohe Thread-Blockierung oder I/O-Wartezustände ein, um eine potenzielle Thread-Erschöpfung frühzeitig zu erkennen.
-
Testen Sie die Anwendung unter Last in einer Staging-Umgebung, um sicherzustellen, dass die Thread-Auslastung bei erhöhten gleichzeitigen Anfragen nicht wiederholt wird.
Stellen Sie nach der Implementierung dieser Änderungen sicher, dass das Seiten-Rendering responsiv bleibt und dass HTTP 5xx-Fehler nicht mehr bei Traffic-Spitzen auftreten.