Definição
Keep-alive HTTP é o mecanismo que mantém aberta a conexão entre um cliente e um servidor depois de uma requisição, permitindo reaproveitá-la para as próximas. Em vez de abrir uma conexão nova a cada chamada, o sistema economiza tempo de negociação de rede e de segurança, reduzindo a latência em integrações com muitas requisições, como APIs fiscais.
Também conhecido como: HTTP keep-alive, Conexão persistente HTTP, HTTP persistent connection, Reuso de conexão HTTP, Keepalive HTTP
O que é keep-alive HTTP, em palavras simples?
Sempre que um sistema conversa com uma API, ele precisa primeiro estabelecer uma conexão com o servidor. Isso funciona como uma ligação telefônica: antes de falar, é preciso discar, esperar atender e confirmar que a linha está boa.
Sem keep-alive, o sistema desliga a ligação ao fim de cada pedido e precisa discar de novo para o próximo. Com keep-alive, a linha continua aberta por algum tempo, e os pedidos seguintes passam pela mesma conexão, sem repetir toda a preparação.
Como funciona o keep-alive no HTTP?
No HTTP/1.0, o cliente precisava pedir explicitamente a conexão persistente, usando o cabeçalho Connection: keep-alive. A partir do HTTP/1.1, as conexões passaram a ser persistentes por padrão, e quem quiser encerrá-las deve enviar Connection: close.
Alguns servidores também informam, pelo cabeçalho Keep-Alive, por quanto tempo uma conexão ociosa será mantida e quantas requisições ela aceita. No HTTP/2, a ideia vai além: uma única conexão transporta várias requisições ao mesmo tempo, recurso chamado multiplexação.
Na prática, quem cuida disso costuma ser a biblioteca HTTP usada pelo sistema, por meio de um pool de conexões: um conjunto de conexões abertas que são emprestadas e devolvidas a cada chamada.
Para que serve o keep-alive em uma API fiscal?
Chamadas a APIs fiscais usam HTTPS, o que exige, além da conexão de rede, uma negociação de segurança TLS. Essa etapa consome tempo e processamento. Reaproveitar a conexão evita repeti-la a cada documento emitido, consultado ou baixado.
O ganho aparece principalmente em volumes altos: um ERP que emite centenas de NF-e, um marketplace que gera NFS-e para muitos vendedores ou um sistema que consulta status de documentos com frequência. Menos tempo gasto abrindo conexões significa respostas mais rápidas e menor carga nos dois lados.
Quais cuidados são necessários ao usar keep-alive?
Conexões ociosas não ficam abertas para sempre. Servidores, balanceadores de carga e proxies encerram conexões paradas após um período. Se o cliente tentar usar uma conexão que já foi fechada do outro lado, pode receber erros como conexão reiniciada ou fechada inesperadamente.
Para evitar isso, recomenda-se configurar no cliente um tempo de ociosidade menor que o do servidor, limitar o tamanho do pool de conexões e ter uma política de retry segura. Em emissões fiscais, o retry deve vir acompanhado de idempotência, para que uma nova tentativa não gere documento duplicado.
Qual a diferença entre keep-alive HTTP e keep-alive TCP?
O keep-alive HTTP trata do reaproveitamento da conexão para várias requisições. Já o keep-alive TCP é um recurso da camada de rede que envia pequenos sinais periódicos para verificar se a outra ponta ainda está ativa em uma conexão parada.
Os nomes são parecidos, mas os objetivos são diferentes: um busca eficiência entre requisições; o outro detecta conexões que caíram sem aviso. Eles podem ser usados juntos.
Exemplos de Keep-alive HTTP
- Um ERP que emite notas em lote mantém um pool de conexões abertas com a API fiscal, enviando cada NF-e pela mesma conexão em vez de abrir uma nova para cada documento.
- Uma plataforma de serviços que gera NFS-e para vários prestadores reduz o tempo médio de resposta ao ativar keep-alive na biblioteca HTTP do seu backend.
- Um sistema que faz polling do status de documentos recebe erros intermitentes de conexão fechada e resolve o problema reduzindo o tempo de ociosidade do pool para um valor menor que o do servidor.
- Um serviço de transporte que emite CT-e e MDF-e ao longo do dia configura o cliente HTTP para reaproveitar conexões e repetir automaticamente chamadas que falham por conexão encerrada.
Perguntas frequentes
Preciso ativar o keep-alive manualmente?
Geralmente não. No HTTP/1.1 e no HTTP/2 a conexão persistente já é o comportamento padrão, e a maioria das bibliotecas HTTP mantém um pool de conexões automaticamente. Vale apenas conferir as configurações de tempo de ociosidade e tamanho do pool.
O keep-alive deixa a emissão da nota mais rápida?
Ele reduz o tempo gasto para abrir conexões, o que diminui a latência total das chamadas. O processamento do documento pela autoridade fiscal, porém, não muda. O ganho é mais perceptível quando há muitas requisições seguidas.
Keep-alive afeta a segurança da comunicação?
Não reduz a segurança. A conexão continua protegida por TLS durante todo o tempo em que permanece aberta, e cada requisição segue enviando suas próprias credenciais de autenticação.
Atualizado em · Como produzimos este glossário
