Come posso risolvere i problemi di latenza per il mio endpoint API ottimizzato per l'edge in Gateway API?

5 minuti di lettura
0

Riscontro una latenza più elevata quando i clienti inviano richieste alla mia API ottimizzata per l'edge in Gateway Amazon API. Come posso trovare l'origine della latenza per la risoluzione dei problemi?

Breve descrizione

Per trovare l'origine della latenza per un endpoint API ottimizzato per edge, determina la durata di ciascuna delle seguenti parti del percorso di connessione:

Importante: Questi passaggi del percorso di connessione si applicano solo agli endpoint API ottimizzati per edge e non agli endpoint API regionali. Le API ottimizzate per edge sono accessibili tramite una distribuzione Amazon CloudFront. Gli endpoint API regionali non sono accessibili tramite CloudFront.

  1. Avvio della connessione alla risoluzione dei nomi DNS
  2. Avvio della connessione all'handshake TCP (Transmission Control Protocol) per connettersi a CloudFront
  3. Avvio della connessione all'handshake Secure Sockets Layer (SSL) per connettersi a CloudFront
  4. Avvio della connessione per l'invio della richiesta HTTP del client a CloudFront
  5. Avvio della connessione al primo byte trasferito da CloudFront
  6. Tempo totale per la richiesta e la risposta all'API
  7. Tempo impiegato da Gateway API per elaborare la richiesta e rispondere alla posizione edge di CloudFront
  8. Tempo impiegato dall'endpoint di integrazione per rispondere alla richiesta HTTP di Gateway API
  9. Tempo impiegato da Gateway API per rispondere alla posizione edge di CloudFront e da CloudFront per rispondere al client

Le parti del percorso di connessione che richiedono più tempo sono l'origine della latenza.

Nota: Puoi usare AWS X-Ray per tracciare e analizzare le richieste degli utenti mentre percorrono le API REST di Gateway Amazon API verso i servizi sottostanti. Gateway API supporta il tracciamento a raggi X per tutti i Tipi di endpoint API REST Gateway API nelle regioni AWS in cui X-Ray è disponibile. Per vedere tutte le regioni in cui X-Ray è disponibile, consulta la Tabella delle regioni AWS.

Soluzione

Esegui lo script Bash curl_for_latency

Per determinare la durata dei passaggi 1-6 del processo del percorso di connessione dell'API, esegui lo script Bash curl_for_latency su GitHub.

Importante: Assicurati di sostituire i valori dell'URL, del metodo HTTP e dei parametri in modo che corrispondano alle informazioni della tua API.

Lo script restituisce il periodo di tempo impiegato dall'API per completare i seguenti passaggi del percorso di connessione:

  1. Avvio della connessione alla risoluzione dei nomi DNS ("time_namelookup")
  2. Avvio della connessione all'handshake TCP per connettersi a CloudFront ("time_connect")
  3. Avvio della connessione all'handshake SSL per connettersi a CloudFront ("time_appconnect")
  4. Avvio della connessione per l'invio della richiesta HTTP del client a CloudFront ("time_pretransfer")
  5. Avvio della connessione al primo byte trasferito da CloudFront ("time_starttransfer")
  6. Tempo totale per la richiesta e la risposta all'API ("time_total")

Dopo aver identificato gli eventi che contribuiscono alla latenza, vedi Come posso ridurre l'aumento della latenza e risolvere i relativi problemi da CloudFront?

Verifica quanto tempo impiega Gateway API per elaborare la richiesta e rispondere alla posizione edge di CloudFront

Esamina la metrica della latenza per la tua API nella console di CloudWatch. Quindi, configura le impostazioni del grafico delle metriche di latenza per l'intervallo di 1 minuto e il Massimo per visualizzare il tempo di elaborazione più lungo in un periodo di tempo di un minuto.

Per istruzioni, consulta Visualizzazione dei parametri di Gateway API nella console di CloudWatch.

Verifica quanto tempo impiega l'endpoint di integrazione a rispondere alla richiesta HTTP di Gateway API

Esamina la metrica IntegrationLatency nella console di CloudWatch. Quindi, configura le impostazioni del grafico IntegrationLatency per l'intervallo di 1 minuto e il Massimo per visualizzare il tempo di elaborazione più lungo in un periodo di tempo di un minuto.

-oppure-

Se hai attivato la registrazione di CloudWatch per la tua API, controlla i log per una voce simile alla seguente:

Received response. Integration latency: 325 ms

Puoi anche aggiungere le variabili $context con registrazione degli accessi per un'ulteriore risoluzione dei problemi di latenza.

Per istruzioni, vedi How do I turn on CloudWatch Logs for troubleshooting my API Gateway REST API or WebSocket API?

Richieste Amazon API Gateway integrate con Lambda

Se utilizzi AWS Lambda con Gateway API e vedi una metrica di IntegrationLatency elevata,esamina i log di CloudWatch della tua funzione Lambda. L'elevata latenza deve essere risolta quando un endpoint API integrato con una funzione Lambda impiega troppo tempo per inviare risposte a un client. Gli avvii a freddo nelle funzioni Lambda non vengono registrati nella metrica di durata della funzione, quindi la latenza di integrazione dell'API potrebbe essere più lunga della durata della funzione. Per vedere la durata della tua funzione con avvio a freddo, usaAWS X-Ray.

Per ulteriori informazioni, vediCome posso risolvere i problemi di latenza elevata nelle mie richieste Gateway API integrate con Lambda?

Verifica quanto tempo impiega Gateway API per rispondere alla posizione edge di CloudFront e quanto tempo impiega CloudFront per rispondere al client

Calcola il tempo totale per la richiesta e la risposta all'API ("time_total"), quindi sottrai quanto segue:

  • Avvio della connessione per l'invio della richiesta HTTP del client a CloudFront ("time_pretransfer")
  • Tempo impiegato da API Gateway per elaborare la richiesta e rispondere alla posizione edge di CloudFront (la metrica Latenza per la tua API)

Il risultato è il tempo impiegato da Gateway API per rispondere alla posizione edge di CloudFront e da CloudFront per rispondere al client.


Informazioni correlate

Utilizzo dei parametri per API HTTP

Amazon API Gateway dimensions and metrics

Monitoraggio dell'esecuzione delle API WebSocket con parametri CloudWatch

Come posso utilizzare i log di Gateway Amazon API per la risoluzione dei problemi?