[<> 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.