ホームページ >php教程 >PHP开发 >Apacheのメモリ解放~

Apacheのメモリ解放~

黄舟
黄舟オリジナル
2016-12-21 11:19:212046ブラウズ

質問: プロセス内の 1 つの Apache.exe が数百メガバイトのメモリを占有し、サーバーが何日間も継続的に実行された後、またはアクセスのピークが過ぎても減少しないのはなぜですか?
回答: apache2confhttpd.conf をメモ帳で開き、MaxRequestsPerChild を検索し、MaxRequestsPerChild 0 を MaxRequestsPerChild 50 に変更します。

通常、「Windows タスク マネージャー - プロセス」には 2 つの apache.exe プロセスが表示されます。1 つは親プロセスで、もう 1 つは子プロセスです。親プロセスはアクセス要求を受信した後、その要求を子プロセスに渡します。加工用に。 MaxRequestsPerChild このディレクティブは、独立した子プロセスが処理できるリクエストの数を設定します。 「MaxRequestsPerChild 数」のリクエストを処理した後、子プロセスは親プロセスによって終了されます。このとき、子プロセスによって占有されていたメモリは解放され、別のアクセス要求がある場合、親プロセスは子プロセスを再生成します。加工するための工程。
MaxRequestsPerChild がデフォルトで 0 (無限) またはそれより大きな数値 (たとえば、10,000 を超える) に設定されている場合、各サブプロセスはより多くのリクエストを処理でき、サブプロセスの連続終了と起動によってアクセス効率が低下することはありません。このとき、200~300Mのメモリが占​​有されていると、負荷を軽減しても占有メモリは減りません。より大きなメモリを備えたサーバーは、0 またはそれより大きな数値に設定できます。メモリの少ないサーバーでは、メモリのオーバーフローを防ぐために、メモリを 30、50、100 に設定するとよいでしょう

============================= === ======================================
Apacheのメモリ使用量

Apacheのプロセスはメモリを使用すると、「徐々に増加」します。つまり、プロセスが停止するまで、メモリ使用量は減少することなく増加し続けます。この場合、Apache プロセスによって使用されるメモリ量は、アプリケーションによって使用される最大メモリ量によって異なります。

keepalive パラメータ

KeepAliveTimeout このパラメータは、http プロセスが何もしないまで待機できる時間を決定します。 keepalive が on に設定され、keepalivetimeout が比較的大きな数値に設定されている場合、Apache が占有するメモリが急速に増加することを想像してください。これは、Apache プロセスがタスクを完了した後 (そして特定のメモリ使用量に達した後、「プログレッシブ」モードを考えてください)、すぐには終了せず、keepalivetimeout が経過するまで待機するためです。ユーザー接続リクエストが到着し続けると仮定すると、かなり多くの無駄な Apache プロセスが蓄積され、これらのプロセスはタイムアウトになるまで強制終了されません。

ただし、keepalive は画像ファイルなどの静的ファイルの送信には非常に効果的であるため、keepalive は on に設定する必要がありますが、keepalvietimeout は 5s などの小さい値に設定する必要があります

MaxRequestsPerChild

このパラメータは、Apache を意味します。処理中のメモリの問題を避けるために、プロセスが何件のリクエストを処理した後、プロセスを終了して再起動する必要があります。

PHP スクリプトの場合、プログラムが使用するメモリの継続的な増加によって引き起こされる Apache への圧力を避けるために、このパラメータを小さく設定することが有益です。PHP はスクリプトの実行後であるため、このパラメータでメモリを定期的に解放します。 、使用済みのリソース (メモリ) のみを自動的に解放します。

例えば50に設定しますか?小さすぎると、Apache プロセスの再生成でもリソースが消費されます。これはバランスの問題です。

上記は、Apache メモリのリリースの内容です~さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。