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:
- Identificar escopo
- Afeta todos os usuários ou específicos?
- Afeta staging ou production ou ambos?
-
Começou quando? (recente deploy?)
-
Coletar informações
- Error messages dos logs
- CloudWatch métricas
- X-Ray traces (se disponível)
-
Database status
-
Reproduzir
- Consegue reproduzir localmente?
- Consegue reproduzir em staging?
-
Passos para reproduzir
-
Mitigar
- Rollback se deploy recente
- Escalar recursos se capacidade
- Disable feature flag se disponível
-
Hotfix se bug específico
-
Resolver
- Fix implementado
- Testado
- Deployed
-
Verificado resolvido
-
Documentar
- Incident report
- Postmortem (se P0/P1)
- Atualizar runbook