我试过pmap pgrep apache2 | grep total在ubuntu 10.4上运行Apache,o / p是这样的:
总计47768K
总计48048K
总计48048K
总计48048K
总计48048K
总计48048K
这是否意味着每个subprocess都占用了48 MB的内存。可以帮助我find每个进程的确切内存使用情况。期待回复
这是我用于近似的平均httpd(如果在Debian发行版上replaceapache2)进程大小:
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'
(使用的内存量)。
对于不同的负载水平。
请记住,caching是非常重要的 – 如果您的networking服务器执行任何 I / O操作,那么您的caching越less,caching就越慢。 作为一个粗略的经验法则,您希望将您的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.
我感谢那个在她的网站上发布的女孩。 果酱