Pular para conteúdo

Troubleshooting

Guias para resolver problemas comuns.

Lambda Issues

Lambda timing out

Symptoms: - Task timed out after X seconds errors - Requests failing após timeout

Causes: - Database connection lenta - External API slow - Cold start excessivo - Infinite loop

Solutions:

# 1. Verificar logs
aws logs tail /aws/lambda/function-name --since 30m

# 2. Verificar timeout configurado
aws lambda get-function-configuration --function-name function-name

# 3. Aumentar timeout (temporário)
aws lambda update-function-configuration \
  --function-name function-name \
  --timeout 60

# 4. Investigar causa raiz
# - Adicionar logging
# - Usar X-Ray
# - Otimizar queries

Lambda out of memory

Symptoms: - Runtime exited with error: signal: killed errors

Solutions:

# Aumentar memória
aws lambda update-function-configuration \
  --function-name function-name \
  --memory-size 1024

Cold starts

Symptoms: - First request muito lento - Latência inconsistente

Solutions:

  • Provisioned concurrency para funções críticas
  • Reduzir tamanho do pacote Lambda
  • Warm-up periodic pings

Database Issues

Too many connections

Symptoms: - FATAL: remaining connection slots are reserved - Connection pool exhausted

Solutions:

# 1. Verificar connections atuais
SELECT count(*) FROM pg_stat_activity;

# 2. Ver quem está usando
SELECT 
  pid,
  usename,
  application_name,
  client_addr,
  state,
  query
FROM pg_stat_activity
WHERE state != 'idle';

# 3. Matar connections idle
SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE state = 'idle'
  AND state_change < now() - interval '5 minutes';

# 4. Aumentar max_connections (último recurso)
# Ou melhorar connection pooling no código

Slow queries

# Identificar queries lentas
SELECT 
  query,
  calls,
  total_time / calls as avg_time,
  max_time
FROM pg_stat_statements
WHERE calls > 100
ORDER BY avg_time DESC
LIMIT 10;

# Adicionar índice
CREATE INDEX CONCURRENTLY idx_table_column ON table(column);

SQS/SNS Issues

Messages stuck in queue

Symptoms: - ApproximateAgeOfOldestMessage muito alto - DLQ com mensagens

Solutions:

# 1. Ver mensagens no DLQ
aws sqs receive-message --queue-url <DLQ_URL> --max-number-of-messages 10

# 2. Investigar por que falharam
# - Ver logs do Lambda consumer
# - Verificar format da mensagem

# 3. Reprocessar manualmente se necessário
python scripts/replay_dlq.py --queue-url <DLQ_URL>

# 4. Purge se mensagens inválidas
aws sqs purge-queue --queue-url <DLQ_URL>

API Gateway Issues

502 Bad Gateway

Causes: - Lambda retornou formato inválido - Lambda timeout - Integration problem

Solutions:

# Ver logs do API Gateway
aws logs tail /aws/apigateway/app-api --since 30m

# Verificar Lambda logs
aws logs tail /aws/lambda/function-name --since 30m

Debugging Checklist

Quando algo quebra:

  1. Identificar escopo
  2. Afeta todos os usuários ou específicos?
  3. Afeta staging ou production ou ambos?
  4. Começou quando? (recente deploy?)

  5. Coletar informações

  6. Error messages dos logs
  7. CloudWatch métricas
  8. X-Ray traces (se disponível)
  9. Database status

  10. Reproduzir

  11. Consegue reproduzir localmente?
  12. Consegue reproduzir em staging?
  13. Passos para reproduzir

  14. Mitigar

  15. Rollback se deploy recente
  16. Escalar recursos se capacidade
  17. Disable feature flag se disponível
  18. Hotfix se bug específico

  19. Resolver

  20. Fix implementado
  21. Testado
  22. Deployed
  23. Verificado resolvido

  24. Documentar

  25. Incident report
  26. Postmortem (se P0/P1)
  27. Atualizar runbook

Common Issues

Ver Common Issues →

Referências