Depois de coçar a cabeça tentando descobrir por que meu site estava respondendo tão lentamente, apesar de os recursos do servidor estarem bem, finalmente chequei o status do Apache e descobri:
78 requests/sec - 0.7 MB/second - 8.5 kB/request
256 requests currently being processed, 0 idle workers
Parece que meu apache está literalmente esgotado com conexões. Qualquer um que tente visitar o meu site é colocado em uma "lista de espera" até o Apache ficar livre novamente.
Parece que tenho duas opções.
A) Aumente o limite máximo de conexões acima de 256. Embora, de acordo com este artigo , não seja tão fácil:
Por padrão, o parâmetro MaxClients possui um limite máximo compilado de 256. Isso pode ser alterado recompilando o Apache no entanto. Algumas distribuições ou empresas de hospedagem aumentam esse limite para um valor muito alto, como 512 ou 1024, a fim de lidar com grandes cargas.
B) Localize scripts que estão consumindo muito tempo. Isso me parece muito mais complicado, já que a maioria dos processos apache simplesmente aparece e desaparece novamente. Além disso, os scripts PHP dos meus sites são otimizados muito bem ... e mais uma vez, os recursos do servidor são bons:
Server load 2.69 (8 CPUs)
Memory Used 25.33% (2,039,108 of 8,048,804)
Swap Used 1.32% (54,156 of 4,095,992)
Qual opção (se uma delas) devo escolher e como devo fazer?
EDITAR
Mais informações: Versão do servidor: Apache / 2.2.23 (Unix) mod_ssl / 2.2.23 OpenSSL / 1.0.0-fips DAV / 2 mod_auth_passthrough / 2.1 mod_bwlimited / 1.4 FrontPage / 5.0.2.2635
Conf HTTP: http://pastebin.com/yBeLt6mP
Exemplo de Solicitação Parital: http://pastebin.com/vzUVDMPR
Alterne Quebrar texto se as caixas de pasta aparecerem estranhas.