私はpmapを試しましたpgrep Apache2
| Apacheおよびo/pを実行しているubuntu 10.4でのgrepの合計は次のとおりです。
合計47768K
合計48048K
合計48048K
合計48048K
合計48048K
合計48048K
これは、各子プロセスが48 MBのRAMを使用していることを意味します。各プロセスの正確なメモリ使用量を見つけるのを手伝ってくれますか?
これは、平均的なhttpd(Debianディストリビューションの場合はApache2に置き換えます)のプロセスサイズの概算に使用するものです。
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を決定する必要があります。
乾杯
貼り付けた男をコピーし、
<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.
それを彼女のウェブサイトに投稿した女の子に感謝します。混雑する
実際のメモリフットプリントが何であるかを計算するのがどれほど複雑か知りたくありません。
プロットしてみてください
ps -ef | grep httpd | wc -l
(httpdプロセスの数)
の最初の番号に対して
free | grep 'buffers/cache'
(使用されたメモリの量)。
さまざまな負荷レベル。
キャッシュは重要であることを忘れないでください。Webサーバーがany I/Oを実行する場合、キャッシュが少ないほど、処理速度は遅くなります。おおまかな目安として、maxclientsをメモリの80%を使い切った場合よりも小さい値に設定します。