クライアントとの多重接続はプロセス/スレッド多重で実現し、通信プロセス数を自動で拡張/縮退する機能を備えています。
Interstage HTTP Server 2.2のプロセス構成は、環境定義ファイル(httpd.conf)において以下のディレクティブを使用して設定します。
機能概要 | ディレクティブ | 初期値 |
---|---|---|
Webサーバ起動時の通信プロセス数 | StartServers | 5 |
「MaxClients÷ThreadsPerChild(注1)」に設定可能な最大値 | ServerLimit | 50 |
クライアント同時接続数 | MaxClients | 50 |
待機状態の通信スレッド数の最小値 | MinSpareThreads | 5 |
待機状態の通信スレッド数の最大値 | MaxSpareThreads | 10 |
「ThreadsPerChild」に設定可能な最大値 | ThreadLimit | - (省略値:25) |
1つの通信プロセスにおける通信スレッド数 | ThreadsPerChild | 1 (注2) |
1つの通信プロセスが処理可能なリクエスト数 | MaxRequestsPerChild | 0 |
注1)通信プロセス数の上限です。剰余がある場合は、切り捨てられます。
注2)Webサーバコネクタと連携する場合は、必ず「1」を設定してください。「1」以外の値を設定した場合は、Webサーバの動作を保証できません。
ポイント
上記のディレクティブの設定値は、以下の大小関係を参考にして、指定してください。
ThreadsPerChild、ThreadLimitの大小関係
ThreadsPerChild ≦ ThreadLimit
StartServers、ServerLimit、MaxClients、ThreadsPerChildの大小関係
StartServers ≦ ( MaxClients ÷ ThreadsPerChild ) ≦ ServerLimit
上記のディレクティブの設定値とプロセス構成の関係について以下に説明します。
Webサーバを起動すると、デーモンプロセスはStartServersディレクティブに設定した数の通信プロセスを生成します。
注1)証明書監視デーモンプロセスは、SSL運用時、証明書の有効日数を通知する警告メッセージをWebサーバ運用中に出力するように設定した場合に生成されます。警告メッセージの出力の有無は、SSLCertExpireディレクティブで設定します。
注2)CGIデーモンプロセスは、CGI運用時に生成されます。
クライアントからの接続要求を受け付けた場合、待機状態の通信スレッドは通信状態となります。
待機状態の通信スレッド数がMinSpareThreadsディレクティブの設定値より少ない場合は、MinSpareThreadsディレクティブの設定値以上の数になるように、通信プロセスを新しく生成します。
クライアントとの通信が切断された場合、通信状態の通信スレッドは待機状態となります。
待機状態の通信スレッド数がMaxSpareThreadsディレクティブの設定値を超過した場合は、MaxSpareThreadsディレクティブの設定値以下の数になるように、待機状態の通信プロセスを削除します。
通信プロセス数が上限値(MaxClients÷ThreadsPerChild)に達した場合は、新しい通信プロセスを生成しません。
また、クライアントとの同時接続数がMaxClientsディレクティブの設定値に達した場合は、クライアントからの新しいリクエストをオペレーティングシステム内にキューイングします。
接続待ちキュー数は、ListenBacklogディレクティブで最大数を設定します。ただし、オペレーティグシステムの仕様に応じた値が加算されます。
注)α:オペレーティグシステムの仕様に応じた値
■1つの通信プロセスが処理可能なリクエスト数
1つの通信プロセスにおいて、プロセス生成後に受け付けるリクエストの合計がMaxRequestsPerChildディレクティブの設定値を超過した場合、その通信プロセスを再起動します。このとき、通信プロセスはクライアントに応答を返して通信を切断したあと、自ら終了します。