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.

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

  2. Refaktorieren Sie Code nach Möglichkeit, um externe HTTP-Aufrufe asynchron oder außerhalb des Hauptanfrage-Threads durchzuführen.

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

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

  5. Ü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.

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

recommendation-more-help
experience-cloud-kcs-help-kbarticles