Best Practices zum Konfigurieren eines E/A-Zeitlimits

Sie lesen gerade die Dokumentation zu Apigee Edge.
Zur Dokumentation zu Apigee X.
info

Die API-Anfragen der Clientanwendungen durchlaufen verschiedene Komponenten in Apigee Edge bevor sie die Backend-Dienste erreichen. Die meisten Clientanwendungen erwarten, dass die Antworten auf diese Anfragen zeitnah eingehen.

Um zeitnahe Antworten zu erhalten, werden die I/O-Timeout-Werte in jeder der Komponenten festgelegt, durch die die API-Anfragen fließen. Wenn eine der Komponenten im Ablauf mehr Zeit benötigt als die vorherige Komponente, tritt für die vorherige Komponente ein Timeout ein und sie antwortet mit 504 Gateway Timeout-Fehlern.

Beim Konfigurieren des Timeouts müssen die Werte in jeder der Komponenten mit größter Sorgfalt konfiguriert werden, da sonst 504 Gateway Timeout-Fehler auftreten können.

In diesem Dokument werden Best Practices für die Konfiguration des I/O-Timeouts für verschiedene Komponenten beschrieben, durch die die API-Anfragen in Apigee Edge fließen.

Best Practices für die Konfiguration des I/O-Timeouts

Beachten Sie beim Konfigurieren des I/O-Timeouts die folgenden Best Practices:

  • Erste Komponente: Verwenden Sie immer das höchste Timeout für die erste Komponente im API Anfrageablauf, die die Clientanwendung in Apigee Edge ist.
  • Letzte Komponente:Verwenden Sie immer das niedrigste Timeout für die letzte Komponente im API Anfrageablauf, die der Backend-Dienst in Apigee Edge ist.
  • Zwischen Komponenten: Der Timeout-Wert, der in jeder Komponente konfiguriert ist, muss sich zwischen der ersten und der letzten Komponente im Ablauf um mindestens 2 bis 3 Sekunden unterscheiden.
  • Router: Es ist immer eine gute Idee, den I/O-Timeout-Wert für einen bestimmten virtuellen Host zu konfigurieren (zu ändern), anstatt ihn auf dem Router zu konfigurieren. So wirkt sich der neue Timeout-Wert nur auf die API-Proxys aus, die den jeweiligen virtuellen Host verwenden, und nicht auf alle API-Proxys, die vom Router bereitgestellt werden.

    Konfigurieren (ändern) Sie das I/O-Timeout auf dem Router nur, wenn Sie absolut sicher sind, dass der neue I/O-Timeout-Wert für alle API-Proxys erforderlich oder anwendbar ist, die auf dem Router ausgeführt werden.

  • Message Processor: Es ist immer eine gute Idee, den I/O-Timeout Wert für einen bestimmten API-Proxy zu konfigurieren (zu ändern), anstatt ihn auf dem Message Processor zu konfigurieren. So wirkt sich der neue Timeout-Wert nur auf den jeweiligen API-Proxy aus und nicht auf alle API Proxys, die vom Message Processor bereitgestellt werden.

    Konfigurieren (ändern) Sie das I/O-Timeout auf dem Message Processor nur, wenn Sie absolut sicher sind dass der neue I/O-Timeout-Wert für alle API-Proxys erforderlich oder anwendbar ist, die auf dem Message Processor ausgeführt werden.

Beispielszenarien

Die Szenarien in diesem Abschnitt können Ihnen helfen, die I/O-Timeout-Werte richtig festzulegen.

Szenario 1: Anfragen von Clientanwendungen direkt an Apigee Edge

In diesem Abschnitt werden die Best Practices beschrieben, die beim Einrichten der Timeout-Werte in einer Apigee Edge-Konfiguration zu beachten sind, in der es keine Zwischenkomponenten zwischen der Clientanwendung und Apigee Edge sowie zwischen Apigee Edge und Ihrem Backend-Server gibt.

Beispiel für eine Apigee-Konfiguration ohne Zwischenkomponenten

Ablauf, der beim Client beginnt und über den Router und den Message Processor zum Backend-Server führt

Wenn Apigee Edge wie im obigen Diagramm ohne Zwischenkomponenten eingerichtet ist, beachten Sie die folgenden Best Practices:

  1. Die Clientanwendung ist die erste Komponente im Ablauf. Der höchste Timeout -Wert sollte auf dem Client festgelegt werden.
  2. Der Backend-Server ist die letzte Komponente im Ablauf. Der niedrigste Timeout -Wert sollte auf dem Backend-Server festgelegt werden.
  3. Konfigurieren Sie die Timeout-Werte für jede der Komponenten in der folgenden Reihenfolge:

    Zeitlimit auf Client-, Router-, Message Processor- und Backend-Serverebene konfigurieren

    Das folgende Beispiel zeigt Timeout-Werte, die gemäß den oben genannten Richtlinien für die verschiedenen Komponenten festgelegt wurden, um Probleme zu vermeiden:

    Konfigurieren Sie das Zeitlimit auf dem Client auf 60 Sekunden, auf dem Router auf 57 Sekunden, auf dem Message Processor auf 55 Sekunden und auf dem Backend-Server auf 52 Sekunden.

Szenario 2: Anfragen von Clientanwendungen über Zwischenkomponenten an Apigee Edge

In diesem Abschnitt werden die Best Practices beschrieben, die beim Einrichten der Timeout-Werte in einer Apigee Edge-Konfiguration zu beachten sind, in der es eine oder mehrere Zwischenkomponenten zwischen der Clientanwendung und Apigee Edge sowie zwischen Apigee Edge und Ihrem Backend-Server gibt.

Die Zwischenkomponenten können ein Load Balancer, ein Content Delivery Network (CDN), NGINX usw. sein.

Beispiel für eine Apigee-Konfiguration mit einer Zwischenkomponente zwischen Client und Apigee Edge sowie zwischen Apigee Edge und Backend-Server

Ablauf, der beim Client beginnt und über die Zwischenkomponente 1 zum Router, dann zum Message Processor, dann zur Zwischenkomponente 2 und schließlich zum Backend-Server führt

Wenn Apigee Edge wie im obigen Diagramm mit einer oder mehreren Zwischenkomponenten eingerichtet ist, beachten Sie die folgenden Best Practices:

  1. Die Clientanwendung ist die erste Komponente im Ablauf. Der höchste Timeout -Wert sollte auf dem Client festgelegt werden.
  2. Der Backend-Server ist die letzte Komponente im Ablauf. Der niedrigste Timeout -Wert sollte auf dem Backend-Server festgelegt werden.
  3. Konfigurieren Sie die Timeout-Werte für jede der Komponenten, einschließlich der Zwischenkomponenten, in der folgenden Reihenfolge:

    Timeout auf dem Client, dann auf der Zwischenkomponente 1, dann auf dem Router, dann auf dem Message Processor, dann auf der Zwischenkomponente 2 und dann auf dem Backend-Server konfigurieren

    Das folgende Beispiel zeigt Timeout-Werte, die gemäß den oben genannten Richtlinien für die verschiedenen Komponenten festgelegt wurden, um Probleme zu vermeiden:

    Konfigurieren Sie das Zeitlimit für den Client auf 63 Sekunden, für die Zwischenkomponente 1 auf 60 Sekunden, für den Router auf 57 Sekunden, für den Message Processor auf 55 Sekunden, für die Zwischenkomponente 2 auf 52 Sekunden und für den Backend-Server auf 59 Sekunden.