Zeitüberschreitungen bei ausgehenden API-Anfragen in AEM Publish auflösen
In diesem Artikel wird erläutert, wie zeitweise auftretende Timeout-Probleme in der Adobe Experience Manager (AEM)-Veröffentlichungsinstanz beim Abrufen großer Datensätze aus externen APIs behoben werden können. Außerdem werden Strategien zur Vermeidung von Timeout-Fehlern auf Plattformebene bereitgestellt.
Beschreibung description
Umgebung
Adobe Experience Manager (AEM) Publish (alle Versionen, einschließlich AEM as a Cloud Service)
Symptome
- Zeitüberschreitungen treten gelegentlich auf, wenn die AEM-Veröffentlichungsinstanz große Datensätze (z. B. Inventardaten) von einer externen API abruft.
- Die externe API benötigt mehr Zeit als die maximale Wartezeit auf Plattformebene, um das erste Byte zurückzugeben, was zu ServiceUnavailable oder Zeitüberschreitungsfehlern für das erste Byte führt.
- Diese Zeitüberschreitungen führen zu Fehlern beim Datenabruf.
Ursache
AEM Publish erzwingt eine maximale Wartezeit auf Plattformebene für ausgehende HTTP-Verbindungen. Wenn eine externe API nur langsam reagiert, überschreiten synchrone Anfragen aus der AEM-Veröffentlichung diesen Timeout, was zu Fehlern und fehlgeschlagenen Datenabrufen führt.
Lösung resolution
Gehen Sie wie folgt vor, um das Problem zu beheben:
-
Überprüfen Sie die HTTP-Client-Konfiguration in Ihrem AEM-Veröffentlichungs-Code:
- Legen Sie explizite Verbindungs- und Lesezeitlimits für ausgehende HTTP-Anfragen an externe APIs fest. Die Plattform erzwingt ein globales Timeout (z. B. 10 Sekunden für die Verbindung und 60 Sekunden für das Lesen), wenn der Code keine eigenen Timeouts angibt.
-
Optimieren Sie Ihre Integration, um lang laufende synchrone Aufrufe zu vermeiden:
-
Batch- oder Paginierung von Inventarabrufanfragen, sodass jeder einzelne API-Aufruf eine kleinere Teilmenge von Daten verarbeitet und innerhalb des Platform-Zeitüberschreitungsfensters gut abgeschlossen wird.
-
Anstatt beispielsweise alle Inventarelemente in einem einzigen Aufruf anzufordern, fordern Sie kleinere Seiten an (z. B. 500 oder 1000 Elemente pro Aufruf) und aggregieren Sie die Ergebnisse nach Bedarf.
-
-
Implementieren Sie nach Möglichkeit das Caching oder die Vorberechnung von Inventardaten:
- Häufig genutzte Inventardaten in einem Cache speichern oder außerhalb der Spitzenzeiten vorberechnen, um den Bedarf an wiederholten großen API-Aufrufen zu verringern.
-
Verschieben von langwierigen Lagerabrufen zur asynchronen Verarbeitung:
- Anstatt die Seitenanfrage auf die API-Antwort eines Drittanbieters warten zu lassen, wird der Trigger-Bestand asynchron aktualisiert (z. B. über geplante Aufträge oder Hintergrund-Worker) und bereitstellt zwischengespeicherte oder vorab abgerufene Daten für Endbenutzer bereit.
-
Wenn Sie eine längere Zeitüberschreitung benötigen, als die Plattform zulässt, gestalten Sie die Integration neu, um synchrone langwierige Aufrufe zu vermeiden. Das Erhöhen des Timeouts auf Plattformebene wird nicht unterstützt.
-
Nachdem Sie diese Änderungen vorgenommen haben, stellen Sie sicher, dass der Inventar-Abruf erfolgreich abgeschlossen wurde und keine Zeitüberschreitungsfehler mehr auftreten.