Evitar alta troca: configuração do apache para servidor com site de alto tráfego

3

Eu possuo um servidor que hospeda um site de alto tráfego que atende de 800 a 1400 usuários em um determinado momento. Esses usuários geralmente ficam por mais de cinco minutos (dada a natureza do site em que os usuários geralmente baixam arquivos grandes).

O que eu notei é que o servidor fica sem SWAP a cada 48 horas, mas meu servidor está usando apenas 5-11% da memória. Eu gostaria de procurar conselhos sobre quais mudanças devo fazer na configuração do Apache para evitar que isso aconteça.

Minha configuração do apache é a seguinte:

keepalive: Off 
keepalivetimeout: 5
maxclients: 2500    
maxkeepaliverequests: 200     
maxrequestsperchild: 10000  
maxspareservers: 10  
minspareservers: 5     
serverlimit: 2600 
serversignature: Off     
servertokens: Full  
startservers: 5 
timeout: 300 

Especificações do servidor:

Intel XEON E5-1620v2
64 GB DDR3 ECC 1600MHz 
2x2000GB
    
por xar 06.12.2014 / 12:13

2 respostas

1

  1. Corte a troca completamente, pois usá-la provavelmente está piorando as coisas.

  2. Corte maxrequestsperchild e maxclients para baixo. Comece por cortar um zero no final e ver como vai. De lá, você pode querer cortá-las em algumas vezes.

  3. Implemente um assassino oom.

por 06.12.2014 / 19:40
1

Tente otimizar a operação antes de considerar as atualizações de hardware.

Além disso, eu geralmente recomendo que você ative o oom killer, já que isso mataria qualquer processo que consumisse todos os servidores ram. Naturalmente, você precisaria de uma maneira atualizada de reiniciar o apache novamente (por exemplo, daemontools).

Mas antes disso, suponho que você possa procurar definir a diretiva MaxClients para o apache. Isso limita a quantidade de solicitações que o apache atenderá por vez e enfileirará as outras. Para prefork, isso limita a quantidade de processos filhos. Para trabalhador, limita a quantidade de encadeamentos disponíveis para atender solicitações.

"Maxclients $ number" é a sintaxe e você pode experimentar o número de MaxClients para ver o quão alto você pode configurá-lo sem consumir muitos recursos do servidor.

Naturalmente, esse conselho é baseado na suposição de que você já identificou o apache como a causa do seu problema de memória.

    
por 06.12.2014 / 13:00