Upnetix Labs · protocolo de experimento
Protocolo: Qual o impacto do uso de conexões persistentes no tempo de resposta de uma API Django REST sob carga?
Este protocolo responde se conexões HTTP persistentes (keep-alive) reduzem a latência média de resposta de uma API Django REST. A pessoa vai medir o tempo de resposta médio e máximo sob diferentes configurações de conexão.

Conexões HTTP persistentes melhoram o tempo de resposta de uma API Django REST em comparação com conexões não persistentes?
Hipótese
O uso de conexões HTTP persistentes (keep-alive) reduz o tempo de resposta médio da API Django REST sob carga moderada.
Variáveis
| Independentes (o que varia) | tipo de conexão HTTP (persistente vs não persistente) |
|---|---|
| Dependentes (o que se mede) | tempo de resposta médio (ms); tempo de resposta máximo (ms); taxa de erro (%) |
| Controladas (o que fica fixo) | hardware do servidor; versão do Django; versão do Python; banco de dados (PostgreSQL); volume de requisições; endpoint testado; rede |
Ambiente
Servidor com Django REST Framework, Python 3.x, PostgreSQL, rodando em ambiente isolado (Docker recomendado). Ferramenta de teste de carga: k6 (código aberto).
Procedimento
- Preparar ambiente
Suba a aplicação Django REST em ambiente Docker, conectada ao PostgreSQL, com endpoint de teste simples (ex: GET /api/items/).
- Configurar k6 para conexões não persistentes
Configure o script do k6 para desabilitar keep-alive.
k6 run --http-keepalive=false script.js - Executar teste (não persistente)
Execute o teste de carga por 5 minutos com 50 usuários virtuais.
k6 run --vus 50 --duration 5m --http-keepalive=false script.js - Coletar métricas
Registre tempo de resposta médio, máximo e taxa de erro.
- Configurar k6 para conexões persistentes
Configure o script do k6 para habilitar keep-alive.
k6 run --http-keepalive=true script.js - Executar teste (persistente)
Execute o teste de carga por 5 minutos com 50 usuários virtuais.
k6 run --vus 50 --duration 5m --http-keepalive=true script.js - Coletar métricas
Registre tempo de resposta médio, máximo e taxa de erro.
- Repetir
Repita cada teste 5 vezes para reduzir variabilidade estatística.
Planilha de coleta
| tipo_conexao (string) | tempo_resposta_medio_ms (ms) | tempo_resposta_max_ms (ms) | taxa_erro_percentual (%) |
|---|---|---|---|
| EXEMPLO: persistente, 120, 350, 0.2 | |||
Repetições recomendadas: 5. Baixe a planilha vazia em CSV: colunas prontas.
Análise
Calcule média, mediana e desvio padrão dos tempos de resposta e taxas de erro para cada configuração. Compare os valores entre conexões persistentes e não persistentes. Use gráficos de boxplot para visualizar a distribuição dos tempos.
Critérios de decisão
- A configuração com menor tempo de resposta médio e taxa de erro é considerada mais eficiente.
- Diferenças menores que 5% podem ser consideradas irrelevantes, consulte a documentação do Django para limites de tuning.
Fontes de erro e mitigação
- Variação de rede: execute testes em horários diferentes para avaliar consistência.
- Cache do banco de dados: limpe ou reinicie o banco entre execuções.
- Carga do sistema: monitore uso de CPU e memória para evitar gargalos externos ao Django.
Referências
- Django Deployment Checklist · Django Software Foundation (docs.djangoproject.com)
- Publicado
- 09/09/2026
- Última revisão
- 09/09/2026
- Versão do conteúdo
- 1.0
- Referências
- 1 oficiais
- Revisão técnica
- redação e revisão por IA, URLs conferidas na publicação
- Status
- Atual
