[<> Para o benefício de outras pessoas que se deparam com esta questão mais antiga ...]
Resposta rápida:
Verifique suas configurações de KeepAlive em seu arquivo apache2.conf ou httpd.conf. Defina seu KeepAliveTimeout entre 2-5 segundos.
Detalhes:
Descobri que, por padrão, o KeepAlive do Apache é on e o KeepAliveTimeout está definido como 15 segundos. Isso significa que o acesso de uma única página do usuário fará com que o servidor espere que o mesmo usuário solicite outra página / recurso por 15 segundos, antes que ele desista e segure a solicitação de outra pessoa.
Essa configuração é MUITO útil quando um usuário solicita o arquivo index.html inicial e depois solicita os arquivos vinculados de CSS, javascript e imagem um ou dois segundos depois. No entanto, computadores modernos e conexões de rede / internet significam que um navegador normalmente está solicitando os recursos vinculados em menos de 2 segundos. O Apache servirá as páginas subseqüentes e esperará mais 15 segundos caso o usuário deseje outra coisa. Isso é altamente ineficiente em um ambiente de alto tráfego.
Se você está recebendo 15 conexões únicas por segundo, e cada conexão permanece ativa por 15 segundos ... Tenho certeza de que você pode ver como as coisas vão ficar muito agitadas rapidamente. Você terá 225 processos do Apache girados, com 90 +% deles completamente ociosos, aguardando outra solicitação de página em sua conexão aberta.
Eu vi várias sugestões para definir seu KeepAliveTimeout em algo entre 2 e 5 segundos. Eu mesmo tenho alguns servidores tão baixos quanto 2 e outros tão altos quanto 5. Eu não recebo o mesmo sistema devagar quando recebo picos de tráfego.