Otimização do preachek do Apache - Escolhendo o valor `MaxRequestsPerChild` certo

9

Estou tentando otimizar nossos servidores da web para lidar com o máximo de conexões possível. Eu li muitos posts e as notas do Apache. Estou tentando entender para qual valor devo escolher MaxRequestsPerChild.

No começo, tentei configurá-lo para 4.000, mas o servidor teve dificuldades em lidar com muitas solicitações, então comecei a aumentá-la. No momento, minha configuração é:

<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  40000
</IfModule>

Depois de definir MaxRequestsPerChildpara 40.000, o servidor conseguiu lidar com mais conexões sem usar mais memória / CPU.

Alguém pode me dizer por favor se esse valor é muito alto ou se é bom ter um valor tão alto?

Obrigado!

Informações do SO:

[root@web06 ~]# uname -a
Linux web 2.6.18-164.el5PAE #1 SMP Thu Sep 3 04:10:44 EDT 2009 i686 i686 i386 GNU/Linux
[root@web06 ~]# free
             total       used       free     shared    buffers     cached
Mem:       3814660    3502968     311692          0     144368    2970468
-/+ buffers/cache:     388132    3426528
Swap:      5210104          0    5210104
Kuf
fonte

Respostas:

10

MaxRequestsPerChildé realmente útil apenas para limitar a quantidade de vazamento de memória ao longo do tempo ao executar scripts dinâmicos. Se você está apenas veiculando conteúdo estático ou scripts muito pequenos / simples, provavelmente poderá defini-lo como 0 ou muito alto sem muito efeito. Se você estiver executando scripts maiores / complexos, defini-lo como 0 / alto fará com que os processos do Apache consumam cada vez mais memória. Exatamente quanto mais depende da sua aplicação específica.

Por outro lado, defini-lo como muito baixo pode resultar em um pouco mais de uso da CPU, pois os processos do Apache são constantemente reiniciados.

Eu faria um teste simples para ver quanta memória seus processos podem usar. Defina MaxRequestsPerChildcomo 0 e reinicie o Apache. Teste o carregamento de algumas páginas e veja o tamanho inicial dos processos do Apache top. Verifique novamente após algumas horas / dias / semanas (dependendo do aplicativo e das visualizações de página) e veja como ele cresce. Se não crescer muito, um valor 0 ou muito grande MaxRequestsPerChilddeve ser bom.

Se você tiver um tamanho máximo definido para os processos do Apache (ou seja, deseja que eles tenham 50 MB ou menos), poderá fazer o mesmo teste com vários valores MaxRequestsPerChildaté encontrar um valor que mantenha o Apache menor que isso.

uesp
fonte
1
Como posso testar carregar as páginas e ver o tamanho dos processos do Apache usando o Windows Server?
Ahmad Alfy