Ajuste do Apache com o servidor LAMP de carga muito alta

3

Eu tenho um servidor LAMP que pode servir ~ 400 solicitações por segundo, às vezes, a configuração do servidor é:

CPU: Intel Quad Core Xeon X3430 (4 x 2.40 GHz, 8MB Cache)
RAM: 16 GB REG ECC DDR3
HD: 500 GB Enterprise Grade SATA II
OS: CentOS 64 Bit (Latest Stable)

Configuração do prefork do Apache2:

StartServers      128
MinSpareServers   16
MaxSpareServers   64
ServerLimit     1500
MaxClients      1500
MaxRequestsPerChild  10000

Nos horários de pico, a carga do servidor é muito alta, a utilização da CPU em torno de 90% e a média de carga em torno de 130

Não tenho certeza se o limite de hardware do servidor ou a configuração do prefork está errado. Qual poderia ser o problema?

    
por Roy 13.01.2012 / 17:57

3 respostas

3

Você está permitindo que o Apache crie até 1.500 crianças para atender às solicitações ( ServerLimit / MaxClients ) - Não é de admirar que sua carga de servidor (o número de processos aguardando na fila de execução) esteja ficando enorme!

Minhas primeiras sugestões a 400 solicitações por segundo com os números que você cita em sua pergunta seriam "Mover o servidor MySQL para sua própria caixa" ou talvez uma melhor escolha: "Adicione outro servidor web e balanceie suas solicitações"

Para ajudá-lo a descobrir como dimensionar o servidor adicional, siga o conselho fornecido pela HDDP500 em sua resposta para descobrir o tamanho médio de um processo do Apache. Descubra quantos processos apache você deseja executar no novo servidor e determine a quantidade de memória RAM necessária para lidar com eles. Lembre-se de adicionar uma margem de segurança (um ou dois shows).

Descobrir os requisitos de CPU (velocidade / número de núcleos) é um pouco mais difícil - Você precisará levar em conta quanto "trabalho" o servidor precisa fazer para gerar cada página. Uma ferramenta como o XDebug pode ajudá-lo, informando quanto tempo leva para gerar uma página (você deve executar este teste em um servidor descarregado como bem como um sob carga, mas você também deve não usar uma ferramenta como o XDebug em um servidor de produção na maioria dos casos.

    
por 14.01.2012 / 05:53
2

Qual é o tamanho médio dos seus processos httpd?

Execute este comando quando o servidor estiver sob carga:

ps -ylC httpd --sort:rss | awk '{sum+=$8; ++n} END {print "Tot="sum"("n")";print "Avg="sum"/"n"="sum/n/1024"MB"}'

Isso informará aproximadamente o tamanho médio de um processo do Apache.

Seu MaxClients é provavelmente muito alto.

    
por 13.01.2012 / 18:39
0

Dê uma olhada nas interrupções da sua CPU e veja onde o gargalo começa (via top ); como mencionado anteriormente, convém discar seu ServerLimit / MaxClients .

Dependendo do seu consumo, isso pode (deve) acelerar as coisas à medida que você diminui a capacidade da caixa de se privar da CPU.

    
por 14.01.2012 / 05:58