Apacheがサーバーのメモリを使いすぎてクラッシュします。サーバーに4 GBのRAM=があります。
パフォーマンスを向上させるためにApacheの設定を微調整しようとしていますが、これはかなり新しいです。
私は従おうとしていた この記事のアドバイス だが、計算方法がわからず、さらに悪化しているようだ。
私のトップは次のようになります:
11697 Apache 15 0 322m 37m 4048 S 0.0 0.9 0:00.52 httpd
13602 Apache 15 0 323m 37m 3944 S 0.0 0.9 0:00.50 httpd
11786 Apache 15 0 322m 36m 4052 S 0.0 0.9 0:00.50 httpd
12525 Apache 15 0 322m 36m 4040 S 0.0 0.9 0:00.63 httpd
11806 Apache 15 0 322m 36m 3952 S 0.0 0.9 0:00.42 httpd
11731 Apache 15 0 322m 36m 4036 S 0.0 0.9 0:00.46 httpd
11717 Apache 16 0 322m 36m 3956 S 0.0 0.9 0:00.54 httpd
11659 Apache 15 0 322m 36m 3980 S 0.0 0.9 0:00.49 httpd
だから、それは
MaxClients = 3000/ (322-37) = 10
そうですか?また、MinSpareServers、MaxSpareServers、MaxRequestsPerChild、StartServers、MinSpareThreads、MaxSpareThreads、ThreadsPerChild、MaxRequestsPerChildなどの他のパラメーターの値はどのようにする必要がありますか?
誰かが私を助けてくれませんか?
更新
皆さんが提案したことを試しました。動作しますが、しばらくの間です。サーバーの起動後しばらくすると、メモリ使用量は増加し続け、ダウンすることはありません。
つまり、サーバーを起動した後、500人のユーザーがオンラインにいると仮定します。サーバーはX RAMを消費します。その2時間後、同じ500ユーザーがオンラインの場合、サーバーは10X RAMを消費します。
これを回避する方法はありますか、それともサーバーを監視し、時々再起動する必要がありますか?
Apacheのメモリ使用量を調整するための主なパラメータはMaxClients
です。値が小さすぎると、クライアント要求を処理するために使用可能なスロットが不足します。数が多すぎると、RAMをすべて使い果たし、パフォーマンスを低下させるスワップスペースの使用を開始します(サーバークラッシュのように見える場合があります)。
MaxClients
を調整する1つの方法は、システムのメモリ使用量を監視し、必要に応じて設定を調整することです。サーバーがスワップを開始した場合は、それを編集します。サーバーに空きメモリがある場合、それを置きます。
また、Apacheのメモリ使用量を確認して、最大値を見積もることもできます。 top
を起動し、M
を押して、プロセスをメモリでソートします。次のように表示されます。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
18698 Apache 17 0 141m 59m 41m S 0.0 1.6 4:57.46 httpd
18591 Apache 17 0 141m 59m 41m S 0.0 1.5 4:54.79 httpd
22917 Apache 16 0 141m 57m 39m S 0.0 1.5 4:57.44 httpd
18595 Apache 16 0 142m 57m 38m S 0.0 1.5 5:23.43 httpd
18697 Apache 16 0 139m 56m 41m S 0.0 1.5 5:09.29 httpd
18735 Apache 25 0 141m 56m 38m S 0.0 1.5 5:05.32 httpd
RES列とSHR列を差し引いて、Apacheインスタンスごとのおおよそのメモリ使用量を取得します。この場合は約16MBです。 4GBのRAMがあり、3GBをApacheに使用したい場合、MaxClients設定は次のようになります。
MaxClients = 3000/16 = 188
したがって、この場合、150〜200の値で開始する可能性がありますが、メモリ使用量を監視し、それがスワップの使用に近づき始めた場合は、MaxClientsを10〜20%減らします。また、3GBの値は単なるランダムな例であることに注意してください。 Apacheのみを実行しているサーバーでは、4GBのほぼすべてを使用できる可能性があります。他のケースでは、Apacheに1 GBまたは2 GBだけを残して、残りを他のアプリケーション、システム、またはキャッシュに保存することもできます。
編集:追加の質問に答える
通常、MaxClientsやその他のApache構成パラメーターの魔法の値はなく、サーバーを突然2倍の速度で高速化します。 MaxClientsが10でも1000でも、一部のサーバーは正常に動作しているように見えます。MaxClients設定が「不良」である主なケースが2つあります。
サーバー、アプリケーション、またはトラフィックの詳細はわかりませんが、出発点として次の構成値を提案できます。それらを試して、サーバーの負荷と使用状況を監視し、必要に応じて設定を変更してください。