私はできるだけ多くの接続を処理するようにWebサーバーを最適化しようとしています。私は多くの投稿とApacheのメモを読みました。 MaxRequestsPerChild
に選択する値を理解しようとしています。
最初は4,000に設定してみましたが、サーバーが多くのリクエストを処理するのが難しかったので、上げ始めました。現時点では、私の設定は次のとおりです。
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 40000
</IfModule>
MaxRequestsPerChild
を40,000に設定した後、サーバーはより多くのメモリ/ CPUを使用せずに、より多くの接続を処理することができました。
この値が高すぎるのか、それとも高値でよいのかを誰かに教えてもらえますか?
ありがとう!
OS情報:
[root@web06 ~]# uname -a
Linux web 2.6.18-164.el5PAE #1 SMP Thu Sep 3 04:10:44 EDT 2009 i686 i686 i386 GNU/Linux
[root@web06 ~]# free
total used free shared buffers cached
Mem: 3814660 3502968 311692 0 144368 2970468
-/+ buffers/cache: 388132 3426528
Swap: 5210104 0 5210104
MaxRequestsPerChild
は、動的スクリプトを実行するときに、時間の経過に伴うメモリリークの量を制限するためにのみ実際に役立ちます。静的コンテンツまたは非常に小さい/単純なスクリプトを提供するだけの場合は、おそらくそれを0または非常に高い値に設定しても、大きな影響はありません。より大きな/複雑なスクリプトを実行している場合、0/highに設定すると、Apacheプロセスがますます多くのメモリを消費することになります。正確にどれだけ多くが特定のアプリケーションに依存します。
一方、非常に低く設定すると、Apacheプロセスが常に再起動されるため、実際にはCPU使用率がわずかに多くなる可能性があります。
プロセスで使用できるメモリ量を確認する簡単なテストを行います。 MaxRequestsPerChild
を0に設定し、Apacheを再起動します。数ページをテストして読み込み、Apacheプロセスの初期サイズがtop
を使用しているサイズを確認します。数時間/数日/数週間後(アプリケーションとページビューによって異なります)に再度確認し、それがどのように成長するかを確認します。それがあまり大きくならない場合は、MaxRequestsPerChild
の0または非常に大きな値で問題ありません。
Apacheプロセスの最大サイズが設定されている場合(つまり、50MB以下にしたい場合)、Apacheを小さく保つ値が見つかるまで、MaxRequestsPerChild
のさまざまな値で同じテストを実行できますそれ。