Назад | Перейти на главную страницу

Определение среднего размера одного процесса Apache для настройки MaxClients

я попробовал pmap pgrep apache2 | grep total на ubuntu 10.4 с Apache, и o / p было таким:

всего 47768K

всего 48048K

всего 48048K

всего 48048K

всего 48048K

всего 48048K

означает ли это, что каждый дочерний процесс занимает 48 МБ ОЗУ. Можете ли вы помочь мне найти точное использование памяти каждым процессом? Ожидание ответа

Вот что я использую для приближения среднего размера процесса httpd (замените apache2, если в дистрибутиве Debian):

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

Как и сказал symcbean, вы должны взять около 80% памяти сервера и разделить ее на средний размер процесса, чтобы определить верхний предел MaxClients.

Ура

Вы действительно не хотите знать, насколько сложно определить фактический объем памяти.

Попробуйте построить

ps -ef | grep httpd | wc -l

(номер процесса httpd)

против первого числа в

free | grep 'buffers/cache'

(объем используемой памяти).

Для различных уровней нагрузки.

Помните, что кеш важен - если ваш веб-сервер любой I / O, чем меньше у вас кеша, тем медленнее он будет. В качестве приблизительного практического правила вы хотите установить для своих maxclients значение меньше, чем используется 80% вашей памяти.

Копирую наклеенные ребята,

<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

Некоторые объяснения здесь:

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.

Я благодарю девушку, которая разместила это на своем сайте. варенье