HTTP 504 Gateway Timeout
O intermediário desistiu de esperar: o servidor upstream não respondeu dentro do limite de tempo do proxy.
O que significa o HTTP 504
HTTP 504 Gateway Timeout é emitido por um proxy, load balancer ou CDN cuja requisição ao servidor upstream não recebeu resposta dentro do seu tempo limite. Diferente do 502 — onde o upstream respondeu mal — com o 504 ele simplesmente não respondeu a tempo.
A causa raiz é quase sempre algo lento nos bastidores: uma consulta de banco de dados cara, uma API externa que não responde, ou um pool de threads da aplicação esgotado pela carga.
Causas comuns de erros 504
- Uma consulta de banco de dados lenta ou índice ausente fazendo um endpoint demorar mais do que o proxy permite.
- A aplicação esperando por uma API externa que ela mesma está lenta ou fora do ar.
- Backend saturado: todos os workers ocupados, requisições enfileirando além do timeout.
- Problemas de rede entre proxy e upstream (roteamento, perda de pacotes, DNS).
- Incompatibilidade de timeout: a aplicação legitimamente precisa de 60s, o proxy corta em 30s.
Como corrigir como visitante
- Tente novamente após um momento — um único 504 é frequentemente uma requisição lenta isolada, não uma interrupção.
- Para uma ação que você enviou (pagamento, pedido), verifique se ela realmente foi concluída antes de tentar novamente.
Como corrigir como desenvolvedor
- Encontre o endpoint lento nos logs de acesso/APM: corrija a consulta, adicione índices, armazene o resultado em cache.
- Mova trabalho lento para jobs em segundo plano e retorne rapidamente com um status que o cliente possa consultar.
- Alinhe os orçamentos de timeout de ponta a ponta (app < proxy < CDN) para que o elo mais lento seja conhecido e intencional.
- Adicione circuit breakers em torno de APIs externas instáveis em vez de deixá-las travar seus workers.
Exemplo de resposta
HTTP/1.1 504 Gateway Timeout Server: nginx Content-Type: text/html <html><body><h1>504 Gateway Timeout</h1></body></html>
Perguntas frequentes
Qual é a diferença entre 504 e 502?
504 significa que o upstream nunca respondeu dentro do tempo limite; 502 significa que ele respondeu com algo inválido.
Um 504 é um problema de conexão do usuário?
Não — é entre o proxy do site e seu backend. A rede do usuário está bem.
Minha requisição enviada foi processada se recebi um 504?
Possivelmente sim — o timeout atingiu a resposta, não necessariamente o processamento. Verifique o estado antes de tentar novamente cegamente ações não idempotentes.