Já existem 2 boas respostas, mas a questão da vida real, talvez a mais importante, ainda não foi mencionada.
Primeiramente, o OP pode querer ler as 2 respostas anteriores e este pequeno post no blog para entender o que são as keepalives. (O autor não detalha a parte sobre o TCPI / IP ficar "mais rápido" quanto mais a conexão estiver aberta. É verdade que as conexões mais duradouras se beneficiam do dimensionamento da janela IP , mas o efeito não é significativo, a menos que os arquivos sejam grande ou o produto com atraso de largura de banda é extraordinariamente grande.)
O grande argumento contra o HTTP Keepalive ao usar o Apache é que ele bloqueia os processos do Apache. Ou seja, um cliente usando keepalives impedirá que o processo 'his' Apache atenda a outros clientes, até que o cliente feche a conexão ou o tempo limite seja atingido. No mesmo período, essa instância do Apache poderia ter servido muitas outras conexões.
Agora, uma configuração muito comum do Apache é o Prefork MPM e um interpretador PHP / Perl / Python, e o código do aplicativo na linguagem mencionada. Nesse caso, cada processo do Apache é "pesado" no sentido de ocupar vários megabytes de RAM (Apache vinculado ao interpretador e ao código do aplicativo). Isso, juntamente com o bloqueio de cada instância do Apache mantida em atividade, é ineficiente.
Uma solução comum é usar 2 servidores Apache (ambos no mesmo servidor físico ou em 2 servidores, conforme necessário) com configurações diferentes:
- um "pesado" com mod_php (ou qualquer outra linguagem de programação usada) para conteúdo dinâmico, com keepalives desativados .
- um "leve" com um conjunto mínimo de módulos, para veicular conteúdo estático (imagem, css, js etc.), com a função keepalives ativada .
Você pode expandir essa separação de conteúdo dinâmico e estático quando necessário , por exemplo:
- usando um servidor orientado a eventos para conteúdo estático, como nginx .
- usando uma CDN para conteúdo estático (poderia fazer com que todo o conteúdo estático servisse para você)
- implementação de cache de conteúdo estático e / ou dinâmico
Outra abordagem para evitar o bloqueio do Apache é usar um balanceador de carga com manipulação de conexão mais inteligente, como o Perlbal .
.. e muito mais. :-)