Limitar o uso da memória do Apache 2

9

Estou executando um servidor de web hobby de um antigo Blue & Branco G3 / 300 executando o Debian PPC Squeeze 2.6.30. O desempenho é bom por um tempo após o reinício, mas eventualmente fica mais e mais atolado. No momento, ele está com 76 dias de atividade, e o principal culpado parece ser o uso de memória de mais de 10 processos do apache2.

Acho que preciso reduzir os valores de StartServers , MinSpareServers e / ou MaxSpareServers , mas não sei qual deles ajustar e há três seções para cada um, dependendo de qual módulo mpm está em uso.

Como eu sei qual das seções a seguir eu preciso mudar, e quais são alguns valores razoáveis dado que a caixa tem 448 MB de memória física (histórico de atualização estranho de um a cada 64, 128 e 256 sticks)?

<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

<IfModule mpm_worker_module>
    StartServers          2
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadLimit          64
    ThreadsPerChild      25
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

<IfModule mpm_event_module>
    StartServers          2
    MaxClients          150
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadLimit          64
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>

Não há outras instâncias de StartServers no meu apache2.conf, mas nenhum desses módulos mpm aparece em mods-available ou mods-enabled . Idéias?

Obrigado!

    
por UltraNurd 12.02.2010 / 19:21

2 respostas

6

400 MB não é muito para um servidor web nos dias de hoje - você pode querer considerar a substituição da caixa:)

Dito isto, se o seu uso de memória estiver aumentando, você provavelmente terá um vazamento de memória em algum lugar - para um teste rápido, olhe o tamanho dos processos httpd agora, então pare / inicie o Apache & veja se eles são muito menores. Se eles forem observá-los por alguns dias e ver se eles crescem.

Se for um vazamento de memória, a solução real para isso é encontrar e consertar o vazamento de memória, mas como normalmente isso é um problema, você também pode ajustar MaxRequestsPerChild para algo diferente de 0 (ilimitado). Isso matará os funcionários do Apache quando eles atenderem um número fixo de solicitações (forçando-os a desistir de sua memória vazada no processo.

Comece com valores maiores (em milhares ou mais) e trabalhe até às centenas. Se você obtiver abaixo de 100 solicitações por criança, seu vazamento de memória é grande o suficiente para garantir que realmente conserte-o , pois o impacto no desempenho de matar e re-gerar constantemente funcionários do apache será significativo.

Re: qual mpm ajustar, a resposta é quase certamente prefork .
Você pode executar httpd -V e procurar a linha Server MPM: que informará com certeza.

    
por 12.02.2010 / 19:32
1

Para descobrir o uso de memória do processo do apache, você desejará ajustar os MaxClients.

A regra geral é: (Memória máxima desejada) / (Uso de memória de 1 processo Apache) = # clientes máximos

No final, você também precisa ajustar seu valor para ser MaxSpareServers Máximo de clientes .

O uso de memória de um processo é strongmente dependente dos módulos que você carregou (php e assim por diante), então você pode querer configurar os clientes máximos um pouco abaixo.

    
por 10.04.2010 / 15:33