Apacheの話

httpd.confのプロセス関連の件について、わかりづらい所があった。
ので、まとめる。
間違えている点があれば指摘して欲しいです。

  • StartServers :Apache起動時の子プロセス数
  • MinSpareServers :待機プロセスの最小数
  • MaxSpareServers :待機プロセスの最大数
  • ServerLimit:最大接続数
  • MaxClients:最大プロセス数

クライアントからの接続は、Apacheの親プロセスが待ち受ける
→それ以降の処理や対応は、子プロセスが受け付ける

1.3.xまでは「1接続=1プロセス」だったらしいが、現在ではマルチスレッドのため、
複数の接続を1つのプロセスで処理しているらしい。

「接続してくるクライアントが増えれば、プロセスが増え、メモリやCPUの負荷も増える」 そりゃそうだ。
「”プロセスを増やす”のにも、負荷がかかる」 うん。

だから、待機プロセスという需要が現れるのかね。
接続に備えて、プロセスを起動しておき、待機している状態が待機プロセス。

MinSpareServersの数だけ、Apache起動後は常にこの数のプロセスが待機している。
MaxSpareServersで指定された数以上の待機プロセスにはならない。

注意書きとしてよく書かれているのが、「クライアントと接続している状態は待機プロセスとは呼ばない」らしい。
つまり、待機プロセスから外れたプロセスの分を補充するため、また待機プロセスが作られる事になる。
接続が切れて待機プロセスに戻ってきた場合、その時点で補充された待機プロセスと合計してMaxSpareServersの値を超えるようなら、
そのプロセスは死ぬ。

最終的に、MaxClients+MaxSpareServers+親プロセス=起動しているhttpdプロセスとなる…のか?

とりあえずここまで。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください