Finding Tamanho médio do processo único do Apache para configurar MaxClients

4

eu tentei pmap pgrep apache2 | grep total no ubuntu 10.4 rodando o Apache e o / p foi assim:

total 47768K

total 48048K

total 48048K

total 48048K

total 48048K

total 48048K

isso significa que cada processo filho está levando 48 MB de RAM. Você pode me ajudar a encontrar o uso exato da memória de cada processo. Esperando uma resposta

    
por Ananthakrishnan 26.01.2012 / 13:05

3 respostas

13

Isto é o que eu uso para uma aproximação do tamanho médio do processo de httpd (substituto do apache2 se em distribuição da Debian):

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

Como o symcbean disse, você deve ter cerca de 80% da memória do servidor e dividi-lo pelo tamanho médio do processo para determinar seu limite máximo de clientes máximos.

Felicidades

    
por 26.01.2012 / 16:38
0

Você realmente não quer saber como é complicado descobrir qual é o tamanho real da memória.

Tente plotar

ps -ef | grep httpd | wc -l

(número do processo httpd)

contra o primeiro número em

free | grep 'buffers/cache'

(quantidade de memória usada).

Para níveis de carga variados.

Lembre-se que o cache é importante - se o seu servidor web fizer qualquer > E / S, então, quanto menos cache você tiver, mais lento ele irá. Como regra geral, você deseja definir seus maxclients para um valor menor que 80% de sua memória usada.

    
por 26.01.2012 / 16:31
0

Eu copio um pessoal colado,

<IfModule mpm_prefork_module>
StartServers 2
MinSpareServers 2
MaxSpareServers 5
MaxClients 200 #must be customized
ServerLimit 200 #must be customized
MaxRequestsPerChild 100
</IfModule>

KeepAlive Off

Algumas explicações estão aqui:

StartServers – this is how many apache instances should start at the very beginning when apache is started. I set it to 2, and it works fine for me.



MinSpareServers – minimum number of spare servers that should be running waiting for potential requests. MinSpareServers=2 worked fine for me too.



MaxSpareServers – maximum number of spare servers that should be running waiting for potential requests, obviously >= MinSpareServers. In my working example MaxSpareServers=5.



MaxClients & ServerLimit. You can use this shell script to determine an average amount of memory consumed by one Apache process. In addition to that it’ll show total amount of memory consumed by all Apache processes. Just unzip and execute as follows:

    wget http://cloudinservice.com/wp-content/uploads/2011/03/ap.sh.zip

    unzip ap.sh.zip

    sh ap.sh

The output will be something like that:

    Apache Memory Usage (MB): 1372.6
    Average Proccess Size (MB): 54.9041

Try to execute it several times to compare the numbers; good results will be shown when server is under a heavy load. Now when you know average amount of memory consumed by Apache and total amount of memory of your server, it is possible to calculate value to be used for MaxClients setting. For example, if in average one your Apache process consumes 50MB RAM and server RAM is 2GB, and you want to leave 512MB for the rest processes, then:
MaxClients = (2GB – 512MB)/50MB = 30.72 ~ 30.
ServerLimit is, as I understand, the same thing, but while MaxClient setting can be changed on the go without a need to restart Apache, for new ServerLimit value to take effect Apache restart is required. MaxClients should always be <= ServerLimit. To make it easy, I set ServerLimit = MaxClients calculated by above formula.

Agradeço à garota que postou isso em seu site. jam

    
por 16.08.2013 / 13:44