Stai visualizzando la documentazione relativa a Apigee e Apigee ibrido.
Non esiste una equivalente
Documentazione di Apigee Edge per questo argomento.
Sintomo
Questo problema viene visualizzato come errore Gateway Timeout
con stato HTTP 504
.
Messaggio di errore
Potresti visualizzare questo errore in Monitoraggio delle API, Debug o altri strumenti. Il motivoTARGET_READ_TIMEOUT
indica che il runtime Apigee non ha ricevuto una risposta tempestiva dal target durante l'esecuzione di una richiesta.
Il valore predefinito del timeout di lettura della destinazione (io.timeout.millis) è di 55 secondi. Ciò significa che se dopo 55 secondi il target non risponde, Apigee lancia questo errore:
{"fault":{"faultstring":"Gateway Timeout", "detail":{"errorcode":"messaging.adaptors.http.flow.GatewayTimeout", "reason":"TARGET_READ_TIMEOUT"}}}
Possibili cause
Causa | Descrizione | Le istruzioni di risoluzione dei problemi applicabili a |
---|---|---|
Target lento | Il target non produce una risposta tempestiva. | Apigee X e Apigee hybrid |
Problema di connettività del server di destinazione | Si è verificato un problema di connettività generale con il target quando
L'app <LoadBalancer> è configurata
sul TargetEndpoint.
|
Apigee X e Apigee hybrid |
Causa: obiettivo lento
Diagnosi
Puoi diagnosticare un problema di destinazione lento utilizzando lo strumento di debug Apigee:
- Crea una sessione di debug per il proxy API.
- Nella sessione di debug, invia una richiesta e controlla l'output di debug.
Come puoi vedere nell'esempio precedente, la richiesta target ha superato i 55 secondi, ovvero predefinita timeout del target limite. Il limite di tempo è configurabile e, se hai modificato il timeout, la durata della richiesta di destinazione corrisponde al timeout impostato. Ad esempio, se il timeout è 10 secondi, in questo scenario una richiesta di destinazione scade dopo 10 secondi. Un obiettivo così lento il comportamento è chiaro un'indicazione che la destinazione non risponde in tempo a una richiesta.
Risoluzione
Apigee consiglia di evitare di utilizzare target lenti. Ad esempio, se la latenza target normale è di 50 ms e la latenza è di 55.000 ms, potrebbe essere necessario indagare se c'è un problema con il target.
Per aumentare il timeout, procedi nel seguente modo:
- Fai clic sulla scheda Sviluppo nell'editor proxy.
- Nel riquadro di navigazione, seleziona l'endpoint di destinazione interessato.
- Nell'editor XML, trova l'elemento XML
HTTPTargetConnection
:
- Aggiungi la proprietà
io.timeout.millis
nel campo<HTTPTargetConnection>
e specificare il nuovo limite di tempo in millisecondi, ad esempio:<HTTPTargetConnection> <URL>https://my-very-slow-target.example.com</URL> <Properties> <Property name="io.timeout.millis">120000</Property> </Properties> </HTTPTargetConnection>
Nell'esempio precedente, il timeout viene aumentato a 120 secondi. Tieni presente che 300 secondi è il limite massimo. Per ulteriori informazioni, vedi Endpoint un riferimento alle proprietà.
- Salva la nuova revisione ed esegui il deployment del proxy.
Se il problema persiste, vai all'articolo Raccogliere obbligatoriamente informazioni di diagnostica di seguito.
Causa: problema di connettività di TargetServer
Diagnosi
Apigee non rivela la causa esatta di un problema di connettività quando configuri
<LoadBalancer>
dell'endpoint. Potresti riuscire a dedurre la causa di un problema di connettività, tuttavia:
dal tempo trascorso della richiesta di destinazione. Come metodo di debug, puoi provare a rimuovere
l'elemento <LoadBalancer>
e provare a raggiungere il target direttamente nel proxy.
Per diagnosticare il problema, utilizza lo strumento di debug.
- Crea una sessione di debug per il proxy API.
- Nella sessione di debug, invia una richiesta e controlla l'output di debug.
Nell'esempio precedente, il timeout ha richiesto nove secondi. Poiché non dura 55 secondi,
sai che la causa dell'errore non è che il limite di timeout è stato superato a causa di un target lento.
Per impostazione predefinita, Apigee riprova a connettersi altre due volte se l'elemento <LoadBalancer>
di destinazione in TargetEndpoint. Perché sai che la connessione è stata tentata tre volte
in totale, e il timeout predefinito per un errore di connessione è di tre secondi
(connect.timeout.millis),
puoi supporre che il problema sia di connettività.
Risoluzione
Se viene confermato che il problema è un timeout della connessione, consulta Errore di servizio di peering VPC 503 non disponibile con TARGET_CONNECT_TIMEOUT.
Per altri problemi, rimuovi <LoadBalancer>
per eseguire il debug e visualizzare l'esatta
codice di errore e verifica se il codice
catalogo degli errori.
Raccogliere informazioni diagnostiche
Se il problema persiste anche dopo aver seguito le istruzioni riportate sopra, raccogli i seguenti dati informazioni diagnostiche e contatta Google Assistenza Cloud:
- ID progetto e nome organizzazione Apigee
- I nomi del proxy e l'ambiente.
- Periodo di tempo in cui si è verificato il problema.
- Frequenza del problema
- Nome host di destinazione.
- Sessione di debug con il problema.