Seus usuarios veem isso:

    HTTP/1.1 504 Gateway Timeout
{"message": "Endpoint request timed out"}

Seu API gateway esperou seu backend responder. Esperou. E desistiu.

O que causa timeouts no API gateway

  • Queries de banco de dados lentas: Indice faltando, lock de tabela, pool de conexoes esgotado
  • Chamadas a APIs externas que travam: Stripe, Auth0 ou terceiro lento/fora do ar
  • Cold starts (serverless): Inicializacao + consulta lenta = timeout
  • Backend inalcancavel: DNS, firewall, servidor fora do ar
  • Resposta grande demais: JSON massivo que demora para serializar
  • Loops infinitos ou deadlocks: Bug de codigo que nunca completa

Limites de timeout por plataforma

PlataformaPadraoMaximo
AWS API Gateway (REST)29s29s (limite rigido)
Kong60sSem limite
Nginx60sSem limite
Vercel10s (Hobby)300s (Enterprise)

Como resolver

  1. Identificar qual endpoint faz timeoutHabilitar access logs no gateway
  2. Verificar se o backend e alcancavelTestar conectividade DNS/rede
  3. Perfilar o endpoint lentoAdicionar timing a cada operacao
  4. Resolver a causa raizIndices, caching, circuit breakers, pool de conexoes
  5. Para operacoes inerentemente lentas: Padrao assincrono (202 Accepted + polling)

Como monitorar timeouts antes dos usuarios reportarem

A versao mais simples e um check agendado que mede seus endpoints mais lentos e alerta bem antes do limite do gateway:

    // check-latency.ts, rode a cada minuto via cron
const start = Date.now()
const res = await fetch('https://api.example.com/api/reports', {
  signal: AbortSignal.timeout(29_000),
})
const ms = Date.now() - start
// notify() = seu webhook do Slack, email ou pager
if (!res.ok || ms > 10_000) await notify(`/api/reports: ${res.status} in ${ms}ms`)

Alerte numa fracao do limite (aqui 10 segundos contra um timeout de 29), assim voce tem margem para corrigir antes do gateway comecar a derrubar requests. Em producao, meça tambem a latencia P95 por rota com trafego real (por exemplo com OpenTelemetry).