Já existem duas boas respostas, mas o talvez problema mais importante da vida real ainda não foi mencionado.
Primeiro, o OP pode querer ler as duas respostas anteriores e este pequeno blog postar para entender o que são keepalives. (O autor não elabora na parte sobre TCPI / IP ficando "mais rápido" quanto mais tempo a conexão é aberta. É verdade, conexões mais duradouras se beneficiam de Escala da janela IP , mas o efeito não é significativo, a menos que os arquivos sejam grandes, ou o produto de atraso de largura de banda seja incomumente 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 'apache' dele sirva qualquer outro cliente, até que o cliente feche a conexão ou o tempo limite seja atingido. No mesmo período de tempo, 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 PHP / Perl / Interpretador de Python e código de aplicativo no idioma mencionado. Nesse caso, cada processo do Apache é "pesado", no sentido de que ocupa vários megabytes de RAM (o Apache está vinculado ao interpretador e ao código do aplicativo). Isso, junto com o bloqueio de cada instância do Apache, é ineficiente.
Uma solução alternativa é usar dois servidores Apache (ambos no mesmo servidor físico ou em dois servidores, conforme necessário) com diferentes configurações:
- um "pesado" com mod_php (ou qualquer linguagem de programação usada) para conteúdo dinâmico, com keepalives off .
- um "leve" com um conjunto mínimo de módulos, para servir conteúdo estático (image, css, js etc), com keepalives on .
Você pode expandir essa separação de conteúdo dinâmico e estático quando necessário , por exemplo:
- usando um servidor controlado por eventos para conteúdo estático, como nginx .
- usando um CDN para conteúdo estático (pode fazer todo o conteúdo estático atendendo a você)
- implementando o armazenamento em cache de conteúdo estático e / ou dinâmico
Outra abordagem com relação a evitar o bloqueio do Apache é usar um balanceador de carga com um tratamento de conexão mais inteligente, como Perlbal .
.. e muito mais. : -)