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.
fonte
Respostas:
Esse artigo é impreciso;
MaxClients
pode ser aumentado acima de 256 ao usar o MPM prefork (que é o que eu suponho que você esteja usando atualmente com base na sua descrição do problema). A partir da documentação :ServerLimit
é o que tem o limite compilado, mas já passou de onde você deveria chegar sem que seu servidor se deparasse com outro gargalo. Documentação :Portanto, se você deseja aumentar o limite do seu cliente para algo como 512, então:
Você também deve dar uma olhada em qual MPM você está usando, pois MPMs diferentes do prefork são melhores em escala. Veja aqui para mais informações.
fonte
httpd -l
. Acho que isso significa que estou executando o trabalhador MPM?MaxClients
,ServerLimit
,ThreadsPerChild
, eThreadLimit
. Você pode fornecer sua configuração atual de trabalhohttpd.conf
?Eu sugiro que você use um proxy reverso, algo como nginx ou lighttpd pode lidar com muito mais conexões que o apache. Dependendo de como seus sites usam o htaccess, você também pode usar o nginx / lighttpd com o fcgi e renunciar completamente ao apache.
fonte
httpd.conf
e sua solução é remover a maior parte do software que ele está executando e substituí-lo ?! Todo software possui seus problemas, mas o uso indevido sem instrução causa problemas piores.