Como posso evitar erros HTTP 504 de tempo limite de gateway no Amazon OpenSearch Service?

Data da última atualização: 30/07/2021

Estou tentando resolver um erro 504 de tempo limite do gateway no Amazon OpenSearch Service (sucessor do Amazon Elasticsearch Service). Como posso fazer isso?

Breve descrição

Um balanceador de carga fica em frente a cada domínio do OpenSearch Service. O balanceador de carga distribui o tráfego de entrada para os nós de dados. Se as solicitações do OpenSearch Service não forem concluídas e retornarem uma confirmação dentro do período de tempo limite ocioso, o balanceador de carga encerrará a conexão TCP. Consequentemente, você receberá um erro HTTP 504 gateway timeout (HTTP 504 de tempo limite do gateway). Um erro HTTP 504 gateway timeout (HTTP 504 de tempo limite do gateway) não indica necessariamente um problema com o cluster. Significa apenas que não foi possível concluir a solicitação dentro do período de tempo limite ocioso.

Os erros de tempo limite do gateway geralmente ocorrem quando você envia muitas solicitações ao mesmo tempo ou quando envia solicitações complexas. Em ambos os casos, o resultado é o mesmo: o OpenSearch Service não consegue concluir a solicitação dentro do período de tempo limite ocioso.

Resolução

Use um ou mais dos seguintes métodos para resolver erros HTTP 504 de tempo limite do gateway:

  • Habilite os logs lentos para o índice do OpenSearch Service e especifique os limites do registro em log. Os logs lentos podem ajudar você a determinar se uma consulta específica está demorando muito para ser concluída. Nesse caso, ajuste a consulta para resolver o erro 504. Para obter mais informações, consulte Viewing Amazon Elasticsearch Service Slow Logs (“Visualização de logs lentos do Amazon OpenSearch Service”).
  • Reduza a quantidade de dados que o OpenSearch Service deve consultar para as solicitações. Isso reduz o tempo necessário para que as solicitações sejam concluídas.
  • Mude para um tipo de instância maior. Para obter mais informações, consulte Escolher tipos de instância e testes.
  • Configure mecanismos de recuo exponencial e de nova tentativa em sua aplicação para que as solicitações de tempo de espera sejam enviadas novamente.
  • Use solicitações em massa em vez de solicitações individuais. Isso reduz a sobrecarga por solicitação para o cluster.