Troubleshooting
Guia de resolução de problemas comuns do sistema Acesso ao Emprego.
Problemas de Inicialização
Container não inicia
Sintoma: O container não inicia ou reinicia constantemente.
Diagnóstico:
docker-compose -f docker-compose.dev.yml logs backend
docker-compose -f docker-compose.dev.yml ps
Soluções:
- Verificar variáveis de ambiente:
docker-compose -f docker-compose.dev.yml exec backend env | grep -E "DB_|REDIS_|SECRET"
- Rebuild do container:
docker-compose -f docker-compose.dev.yml build --no-cache backend
docker-compose -f docker-compose.dev.yml up -d backend
- Verificar conectividade com dependências:
docker-compose -f docker-compose.dev.yml exec backend python -c "
from django.db import connection
connection.ensure_connection()
print('Database OK!')
"
Erro de conexão com banco de dados
Sintoma: django.db.utils.OperationalError: could not connect to server
Diagnóstico:
docker-compose -f docker-compose.dev.yml logs postgres
docker-compose -f docker-compose.dev.yml exec postgres pg_isready
Soluções:
- Aguardar inicialização completa do PostgreSQL:
docker-compose -f docker-compose.dev.yml restart postgres
sleep 10
docker-compose -f docker-compose.dev.yml restart backend
- Verificar credenciais:
docker-compose -f docker-compose.dev.yml exec postgres psql -U postgres -c "\l"
- Recriar banco de dados:
docker-compose -f docker-compose.dev.yml down -v
docker-compose -f docker-compose.dev.yml up -d
docker-compose -f docker-compose.dev.yml exec backend python manage.py migrate
Porta já em uso
Sintoma: Error starting userland proxy: Bind for 0.0.0.0:8080: address already in use
Diagnóstico:
# Windows
netstat -ano | findstr :8080
# Linux/Mac
lsof -i :8080
Soluções:
- Matar processo usando a porta:
# Linux/Mac
kill -9 $(lsof -t -i:8080)
# Windows (substituir PID pelo número encontrado)
taskkill /PID <PID> /F
- Alterar porta no docker-compose:
ports:
- "8081:8080"
Problemas de Performance
API lenta
Sintoma: Endpoints demorando mais de 500ms para responder.
Diagnóstico:
docker-compose -f docker-compose.dev.yml exec backend python manage.py shell
>>> from django.db import connection
>>> from django.db import reset_queries
>>> reset_queries()
>>> # Execute a operação lenta
>>> print(len(connection.queries))
>>> for q in connection.queries: print(q['time'], q['sql'][:100])
Soluções:
- Otimizar queries com select_related/prefetch_related
- Adicionar índices nas colunas mais consultadas
- Implementar cache para dados frequentes:
from django.core.cache import cache
cache.set('key', 'value', timeout=3600)
Memória alta
Sintoma: Container backend usando mais de 80% da memória.
Diagnóstico:
docker stats
Soluções:
- Reiniciar o serviço:
docker-compose -f docker-compose.dev.yml restart backend
- Aumentar limite de memória:
deploy:
resources:
limits:
memory: 2G
- Verificar memory leaks:
docker-compose -f docker-compose.dev.yml exec backend python -c "
import tracemalloc
tracemalloc.start()
# Execute operação suspeita
snapshot = tracemalloc.take_snapshot()
for stat in snapshot.statistics('lineno')[:10]:
print(stat)
"
Problemas com Celery
Tasks não sendo processadas
Sintoma: Tasks ficam pendentes na fila indefinidamente.
Diagnóstico:
docker-compose -f docker-compose.dev.yml logs worker
docker-compose -f docker-compose.dev.yml exec backend celery -A app inspect active
docker-compose -f docker-compose.dev.yml exec redis redis-cli LLEN celery
Soluções:
- Reiniciar worker:
docker-compose -f docker-compose.dev.yml restart worker
- Verificar conexão com Redis:
docker-compose -f docker-compose.dev.yml exec redis redis-cli ping
- Limpar fila e reprocessar:
docker-compose -f docker-compose.dev.yml exec backend celery -A app purge
Tasks falhando repetidamente
Sintoma: Tasks entram em loop de retry ou falham com exceções.
Diagnóstico:
docker-compose -f docker-compose.dev.yml logs worker | grep -i error
Soluções:
- Verificar logs detalhados da task:
docker-compose -f docker-compose.dev.yml exec backend celery -A app events
- Executar task manualmente para debug:
docker-compose -f docker-compose.dev.yml exec backend python manage.py shell
>>> from app.apps.your_app.tasks import your_task
>>> your_task()
Problemas de Autenticação
Token JWT inválido
Sintoma: 401 Unauthorized - Token is invalid or expired
Diagnóstico: Verificar se o token está expirado ou malformado.
Soluções:
- Gerar novo token:
curl -X POST http://localhost:8080/api/auth/token/ \
-H "Content-Type: application/json" \
-d '{"email": "user@test.com", "password": "senha@1234"}'
- Refresh do token:
curl -X POST http://localhost:8080/api/auth/token/refresh/ \
-H "Content-Type: application/json" \
-d '{"refresh": "seu_refresh_token"}'
Erro de CORS
Sintoma: Access to XMLHttpRequest has been blocked by CORS policy
Diagnóstico:
docker-compose -f docker-compose.dev.yml exec backend python -c "
from django.conf import settings
print('CORS Origins:', settings.CORS_ALLOWED_ORIGINS)
"
Soluções:
- Adicionar origem ao .env:
CORS_ALLOWED_ORIGINS=http://localhost:5173,http://127.0.0.1:5173
- Reiniciar backend:
docker-compose -f docker-compose.dev.yml restart backend
Problemas de Migrations
Migration em conflito
Sintoma: django.db.migrations.exceptions.InconsistentMigrationHistory
Diagnóstico:
docker-compose -f docker-compose.dev.yml exec backend python manage.py showmigrations
Soluções:
- Fake migration específica:
docker-compose -f docker-compose.dev.yml exec backend python manage.py migrate --fake app_name migration_name
- Reset migrations da app:
docker-compose -f docker-compose.dev.yml exec backend python manage.py migrate app_name zero
docker-compose -f docker-compose.dev.yml exec backend python manage.py migrate app_name
Erro ao criar migration
Sintoma: No changes detected
Soluções:
- Especificar a app:
docker-compose -f docker-compose.dev.yml exec backend python manage.py makemigrations app_name
- Verificar se a app está no INSTALLED_APPS
Problemas do Sistema Fuzzy
Word embeddings não encontrados
Sintoma: FileNotFoundError: Word embeddings file not found
Soluções:
- Download manual:
docker-compose -f docker-compose.dev.yml exec backend python -c "
import nltk
nltk.download('punkt')
nltk.download('stopwords')
"
- Instalar modelo spaCy:
docker-compose -f docker-compose.dev.yml exec backend python -m spacy download pt_core_news_sm
- Limpar e recarregar:
docker-compose -f docker-compose.dev.yml exec backend rm -rf /app/fuzzy_files/*
docker-compose -f docker-compose.dev.yml restart worker
Logs e Debugging
Habilitar modo debug
# No .env
DEBUG=True
DJANGO_LOG_LEVEL=DEBUG
Analisar logs estruturados
docker-compose -f docker-compose.dev.yml logs -f | grep -E "\[ERROR\]|\[CRITICAL\]"
docker-compose -f docker-compose.dev.yml logs --since="1h" backend
docker-compose -f docker-compose.dev.yml logs backend 2>&1 | tee backend_logs.txt
Debug remoto com pdb
import pdb; pdb.set_trace()
docker-compose -f docker-compose.dev.yml run --service-ports backend python manage.py runserver 0.0.0.0:8080
Contato de Suporte
Se o problema persistir após seguir este guia:
- Colete logs relevantes
- Documente os passos de reprodução
- Abra uma issue no repositório
- Contate o time de suporte: suporte@portal-talentos.gov.br
A maioria dos problemas pode ser evitada com monitoramento proativo e manutenção regular. Consulte o guia de Procedimentos de Manutenção.