Apache prefork最適化-適切な `MaxRequestsPerChild`値を選択する


9

私はできるだけ多くの接続を処理するように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

回答:


10

MaxRequestsPerChild動的スクリプトを実行するときに、時間の経過に伴うメモリリークの量を制限するのに本当に役立ちます。静的コンテンツまたは非常に小さい/単純なスクリプトを提供するだけの場合は、おそらくそれを0または非常に高い値に設定しても、大きな影響はありません。より大きな/複雑なスクリプトを実行している場合は、それを0 / highに設定すると、Apacheプロセスがますます多くのメモリを消費することになります。正確にどれだけ多くが特定のアプリケーションに依存します。

一方、非常に低く設定すると、Apacheプロセスが常に再起動されるため、実際にはCPU使用率がわずかに多くなる可能性があります。

プロセスが使用できるメモリ量を確認する簡単なテストを行います。MaxRequestsPerChild0に設定し、Apacheを再起動します。数ページをテストしてロードし、Apacheプロセスの初期サイズが何を使用しているかを確認しtopます。数時間/数日/数週間後に(アプリケーションとページビューに応じて)もう一度確認し、それがどのように成長するかを確認します。大きくならない場合は、0または非常に大きな値で問題ありMaxRequestsPerChildません。

Apacheプロセスの最大サイズが設定されている場合(つまり、50MB以下にしたい場合)、MaxRequestsPerChildApacheをそれ以下に保つ値が見つかるまで、さまざまな値で同じテストを実行できます。


1
Windows Serverを使用してページをロードしてApacheプロセスのサイズを確認するにはどうすればよいですか?
Ahmad Alfy 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.