Cosminexus V9 アプリケーションサーバ Cosminexus HTTP Server

[目次][用語][索引][前へ][次へ]

4.1.1 HTTP Serverのプロセス構造(UNIX版)

<この項の構成>
(1) プロセス構造
(2) プロセス数の遷移

(1) プロセス構造

HTTP Serverのプロセス構造を次に示します。

図4-1 HTTP Serverのプロセス構造(UNIX版)

[図データ]

HTTP Serverを起動すると,制御プロセスが起動します。制御プロセスは,リクエストを処理するサーバプロセスを起動し,その稼働を監視します。制御プロセスは,最初にStartServersディレクティブで指定した個数のサーバプロセスを生成します。その後のサーバプロセス数は,MinSpareServers,MaxSpareServersディレクティブ指定値に基づいて増減していきます。サーバプロセス数の最大値は,MaxClientsディレクティブで指定します。サーバプロセス数の増減は,制御プロセスが管理します。この処理をメンテナンスと呼びます。

クライアントからのTCP接続は,Listenディレクティブで指定したIPアドレスとポートからOSが受信し,OS内のListenキューに保留します。Listenキューのサイズは,ListenBacklogディレクティブで指定できます。Listenキューに格納できなかったTCP接続は確立されません。Listenキューに格納されたTCP接続は,サーバプロセスの一つが取り出して処理を行います。

一つのサーバプロセスは,一つのTCP接続を取得して処理します。また,一つのサーバプロセスは,MaxRequestsPerChildディレクティブに指定した個数のHTTPリクエストを処理すると終了します。このときは,制御プロセスが新たなサーバプロセスを生成して処理を続行します。

制御プロセスは,HTTP Serverを起動したユーザ,グループ権限で動作します。サーバプロセスは,User,Groupディレクティブで指定したユーザ,グループ権限で動作します。制御プロセスおよびサーバプロセスともに,プロセス名(実行プログラム名)はhttpsdです。制御プロセスのプロセスIDは,PidFileディレクティブに指定したファイルに出力します。

(2) プロセス数の遷移

メンテナンスは,サーバの負荷集中を避けるために,1秒ごとに2n−1(nは連続メンテナンス実行回数,6以上はn=6)個ずつサーバプロセスを生成します。サーバプロセスは,MinSpareServersディレクティブで指定した数の待ちプロセスができるかまたは全プロセス数がMaxClientsディレクティブで指定した数になるまで生成されます。1回のメンテナンスで8個以上のサーバプロセスを生成した場合は,エラーログ(infoレベル)にその旨出力します。

リクエストの処理が終了すると,サーバプロセスは待ち状態になります。待ち状態のプロセスが増加すると,メンテナンスのタイミングで,MaxSpareServersディレクティブで指定した数だけ残して,サーバプロセスを終了させます。

(a) 留意点
(b) プロセス数の遷移例

HWSKeepStartServersの指定がOffの場合の,プロセス数の遷移例を図4-2に示します。

HWSKeepStartServersの指定がOnの場合の,プロセス数の遷移例を図4-3に示します。