Best practice per la configurazione del timeout I/O

Stai visualizzando la documentazione di Apigee Edge.
Consulta la documentazione di Apigee X.
info

Le richieste API effettuate dalle applicazioni client passano attraverso vari componenti di Apigee Edge prima di raggiungere i servizi di backend. La maggior parte delle applicazioni client si aspetta di ricevere le risposte a queste richieste in modo tempestivo.

Per ottenere risposte tempestive, i valori di timeout di I/O vengono impostati in ciascuno dei componenti attraverso i quali passano le richieste API. Se uno dei componenti nel flusso impiega più tempo del componente precedente, il componente precedente va in timeout e risponde con errori 504 Gateway Timeout.

Durante la configurazione del timeout, i valori devono essere configurati in ciascuno dei componenti con la massima attenzione, altrimenti possono verificarsi errori 504 Gateway Timeout.

Questo documento descrive le best practice per la configurazione del timeout di I/O su vari componenti attraverso i quali passano le richieste API in Apigee Edge.

Best practice per la configurazione del timeout di I/O

Tieni presente le seguenti best practice durante la configurazione del timeout di I/O:

  • Primo componente: utilizza sempre il timeout più alto sul primo componente nel flusso di richieste API ovvero l'applicazione client in Apigee Edge.
  • Ultimo componente: utilizza sempre il timeout più basso sull'ultimo componente nel flusso di richieste API, ovvero il servizio di backend in Apigee Edge.
  • Tra i componenti: assicurati che ci sia una differenza di almeno 2-3 secondi nel valore di timeout configurato in ogni componente tra il primo e l'ultimo componente del flusso.
  • Router: è sempre una buona pratica configurare (modificare) il valore di timeout di I/O per un host virtuale specifico anziché configurarlo sul router. In questo modo, il nuovo valore di timeout influisce solo sui proxy API che utilizzano l'host virtuale specifico e non su tutti i proxy API gestiti dal router.

    Configura (modifica) il timeout di I/O sul router solo quando sei assolutamente certo che il nuovo valore di timeout di I/O sia necessario o applicabile a tutti i proxy API in esecuzione sul router.

  • Processore di messaggi: è sempre una buona pratica configurare (modificare) il valore di timeout di I/O per un proxy API specifico anziché configurarlo sul processore di messaggi. In questo modo, il nuovo valore di timeout influisce solo sul proxy API specifico e non su tutti i proxy API gestiti dal processore di messaggi.

    Configura (modifica) il timeout di I/O sul processore di messaggi solo quando sei assolutamente certo che il nuovo valore di timeout di I/O sia necessario o applicabile a tutti i proxy API in esecuzione sul processore di messaggi.

Scenari di esempio

Gli scenari in questa sezione possono aiutarti a capire come impostare correttamente i valori di timeout di I/O.

Scenario 1: richieste ad Apigee Edge direttamente dalle applicazioni client

Questa sezione descrive le best practice da seguire durante la configurazione dei valori di timeout in una configurazione di Apigee Edge in cui non sono presenti componenti intermedi tra l'applicazione client e Apigee Edge e tra Apigee Edge e il server di backend.

Esempio di configurazione di Apigee senza componenti intermedi

Flusso che inizia dal client, va al router, poi al processore di messaggi e infine al server di backend

Se Apigee Edge è configurato come mostrato nel diagramma sopra, senza componenti intermedi, utilizza le seguenti best practice:

  1. L'applicazione client è il primo componente del flusso. Il valore di timeout più alto deve essere impostato sul client.
  2. Il server di backend è l'ultimo componente del flusso. Il valore di timeout più basso deve essere impostato sul server di backend.
  3. Configura i valori di timeout su ciascuno dei componenti nel seguente ordine:

    Configura il timeout su client, router, processore di messaggi e server di backend

    L'esempio seguente mostra i valori di timeout impostati sui vari componenti in base alle linee guida sopra riportate per evitare problemi:

    Configura il timeout sul client a 60 secondi, poi sul router a 57 secondi, poi sul processore di messaggi a 55 secondi e infine sul server di backend a 52 secondi.

Scenario 2: richieste ad Apigee Edge dalle applicazioni client tramite componenti intermedi

Questa sezione descrive le best practice da seguire durante la configurazione dei valori di timeout in una configurazione di Apigee Edge in cui sono presenti uno o più componenti intermedi tra l'applicazione client e Apigee Edge e tra Apigee Edge e il server di backend.

I componenti intermedi possono essere un bilanciatore del carico, una rete CDN (Content Delivery Network) (CDN), NGINX e così via.

Esempio di configurazione di Apigee con un componente intermedio tra il client e Apigee Edge e tra Apigee Edge e il server di backend

Flusso che inizia dal client, va al componente intermedio 1, poi al router, poi al processore di messaggi, poi al componente intermedio 2 e infine al server di backend

Se Apigee Edge è configurato come mostrato nel diagramma sopra, con uno o più componenti intermedi componenti, utilizza le seguenti best practice:

  1. L'applicazione client è il primo componente del flusso. Il valore di timeout più alto deve essere impostato sul client.
  2. Il server di backend è l'ultimo componente del flusso. Il valore di timeout più basso deve essere impostato sul server di backend.
  3. Configura i valori di timeout su ciascuno dei componenti, inclusi i componenti intermedi, nel seguente ordine:

    Configura il timeout sul client, quindi sul componente intermedio 1, poi sul router, sul processore di messaggi, sul componente intermedio 2 e infine sul server di backend.

    L'esempio seguente mostra i valori di timeout impostati sui vari componenti in base alle linee guida sopra riportate per evitare problemi:

    Configura il timeout sul client a 63 secondi, poi sul componente intermedio 1 a 60 secondi, poi sul router a 57 secondi, poi sul processore di messaggi a 55 secondi, poi sul componente intermedio 2 a 52 secondi, poi sul server di backend a 59 secondi.