2008年1月14日月曜日

Apacheの MaxRequestsPerChildについて

httpd.confのMaxRequestsPerChildについて調べたメモ。

MaxRequestsPerChild を非ゼロに制限することには、二つの利点があります:
  • (偶発的な) メモリーリークが起こった場合に プロセスが消費するメモリの総量を制限できる
  • プロセスに有限のライフタイムを設定することで、 サーバ負荷が下がった時にプロセス数を少なくすることができる

動作しているプログラムのメモリリークバグの量にもよるが、バグが多ければ比較的少ない値を。バグが少なければ大きな値を。
(中略)
また値としてゼロを指定出来るが、その場合はそのプロセスが延々と動き続ける事となり、万が一メモリリークが発生した場合肥大化してサーバをダウンさせる事になる。

Windowsでは、これを0に設定することをお薦めします。0以外の値に設定すると、リクエスト数に達したときに子プロセスが終了し、再作成されます。 その際、子プロセスは構成ファイルを再度読み取ります。そのため、構成ファイルを変更したが、変更を適用するつもりはないという場合に、予期しない処理が 行われる可能性があります。

WindowsではMaxRequestsPerChildをゼロにしていても、なぜか勝手に子プロセスが再起動することがある。(Parent: child process exited with status 3221225477 -- Restarting.)
その時に子プロセスの終了に失敗すると子プロセスを起動できずに親プロセスごと停止してしまうことがある。

対策は...WindowsでないOSを使う?


0 件のコメント:

ブログ アーカイブ

tags