Hitachi Web Server
Hitachi Web Serverのプロセス構造を次に示します。
図4-1 Hitachi Web Serverのプロセス構造(UNIX版)
Hitachi Web Serverを起動すると,制御プロセスが起動します。制御プロセスは,リクエストを処理するサーバプロセスを起動し,その稼働を監視します。制御プロセスは,最初にStartServersディレクティブで指定した個数のサーバプロセスを生成します。その後のサーバプロセス数は,MinSpareServers,MaxSpareServersディレクティブ指定値に基づいて増減していきます。サーバプロセス数の最大値は,MaxClientsディレクティブで指定します。サーバプロセス数の増減は,制御プロセスが管理します。この処理をメンテナンスと呼びます。
クライアントからのTCP接続は,Listenディレクティブで指定したIPアドレスとポートからOSが受信し,OS内のListenキューに保留します。Listenキューのサイズは,ListenBacklogディレクティブで指定できます。Listenキューに格納できなかったTCP接続は確立されません。Listenキューに格納されたTCP接続は,サーバプロセスの一つが取り出して処理を行います。
一つのサーバプロセスは,一つのTCP接続を取得して処理します。また,一つのサーバプロセスは,MaxRequestsPerChildディレクティブに指定した個数のHTTPリクエストを処理すると終了します。このときは,制御プロセスが新たなサーバプロセスを生成して処理を続行します。
制御プロセスは,Hitachi Web Serverを起動したユーザ,グループ権限で動作します。サーバプロセスは,User,Groupディレクティブで指定したユーザ,グループ権限で動作します。制御プロセス及びサーバプロセスともに,プロセス名(実行プログラム名)はhttpsdです。制御プロセスのプロセスIDは,PidFileディレクティブに指定したファイルに出力します。
メンテナンスは,サーバの負荷集中を避けるために,1秒ごとに2n−1(nは連続メンテナンス実行回数,6以上はn=6)個ずつサーバプロセスを生成します。サーバプロセスは,MinSpareServersディレクティブで指定した数の待ちプロセスができるか,又は全プロセス数がMaxClientsディレクティブで指定した数になるまで生成されます。1回のメンテナンスで8個以上のサーバプロセスを生成した場合は,エラーログ(infoレベル)にその旨出力します。
リクエストの処理が終了すると,サーバプロセスは待ち状態になります。待ち状態のプロセスが増加すると,メンテナンスのタイミングで,MaxSpareServersディレクティブで指定した数だけ残して,サーバプロセスを終了させます。
HWSKeepStartServersの指定がOffの場合の,プロセス数の遷移例を図4-2に示します。
StartServers 8 MaxSpareServers 10 MinSpareServers 5 MaxClients 15 HWSKeepStartServers Off MaxRequestsPerChild 10000 KeepAlive Off
図4-2 プロセス数の遷移例(HWSKeepStartServersの指定がOffの場合)
HWSKeepStartServersの指定がOnの場合の,プロセス数の遷移例を図4-3に示します。
StartServers 8 MaxSpareServers 10 MinSpareServers 5 MaxClients 15 HWSKeepStartServers On MaxRequestsPerChild 10000 KeepAlive Off
図4-3 プロセス数の遷移例(HWSKeepStartServersの指定がOnの場合)
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.