In che modo è possibile evitare gli errori di timeout del gateway HTTP 504 su Amazon OpenSearch Service?

Ultimo aggiornamento: 30/07/2021

Sto cercando di risolvere un errore di timeout del gateway 504 in Amazon OpenSearch Service (successore di Amazon Elasticsearch Service). In che modo posso farlo?

Breve descrizione

Un bilanciatore del carico si trova di fronte a ciascun dominio di OpenSearch Service. Il sistema di bilanciamento del carico distribuisce il traffico in entrata ai nodi dati. Se le richieste di OpenSearch Service non vengono completate e restituiscono una conferma entro il periodo di timeout di inattività, il bilanciatore del carico chiude la connessione TCP. Di conseguenza, comparirà un errore di timeout del gateway HTTP 504. Un errore di timeout del gateway HTTP 504 non indica necessariamente un problema con il cluster, ma significa solo che la richiesta non può essere completata entro il periodo di timeout inattivo.

Gli errori di timeout del gateway si verificano in genere quando sono inviate troppe richieste contemporaneamente o quando si inviano richieste complesse. In entrambi i casi, il risultato è lo stesso: OpenSearch Service non può completare la richiesta entro il periodo di timeout di inattività.

Risoluzione

Utilizzare uno o più dei seguenti metodi per risolvere gli errori di timeout del gateway HTTP 504:

  • Abilitare i log lenti per l'indice del servizio OpenSearch, quindi specificare le soglie di registrazione. Gli slow log possono aiutare a determinare se il completamento di una determinata query impiega molto tempo. In tal caso, regolare la query per risolvere l'errore 504. Per ulteriori informazioni, consultare la Visualizzazione degli slow log di Amazon OpenSearch Service.
  • Ridurre la quantità di dati che OpenSearch Service deve interrogare per le richieste. Ciò riduce il tempo necessario per il completamento delle richieste.
  • Passare a un tipo di istanza più grande. Per ulteriori informazioni, consulta Scelta dei tipi di istanza e test.
  • Configurare meccanismi di backoff esponenziale e di tentativi nell'applicazione in modo che le richieste di timeout vengano nuovamente inviate.
  • Utilizzare le richieste in blocco anziché le singole richieste. Ciò riduce il sovraccarico per richiesta per il cluster.