Cosminexus 機能解説

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

4.3.2 Webクライアントからの接続数とリクエスト処理スレッド数の制御

ここでは,Webクライアントからの接続数の制御と,リクエスト処理スレッド数の制御について説明します。

インプロセスHTTPサーバでは,一度に接続できるWebクライアントの数を設定することで,インプロセスHTTPサーバで作成するリクエスト処理スレッド数を制御できます。また,処理を実行していないリクエスト処理スレッドを予備スレッドとして一定数プールしておくことで,リクエスト処理スレッドの追加・削除に掛かる処理を最小限に抑えられます。

このように,Webクライアントからの接続数とリクエスト処理スレッド数を制御して,リクエスト処理スレッド数を最適化することによって,J2EEサーバの負荷を一定に抑え,安定した高いスループットを維持できます。

Webクライアントからの接続数の制御とリクエスト処理スレッド数の制御について説明します。

<この項の構成>
(1) Webクライアントからの接続数の制御
(2) リクエスト処理スレッド数の制御
(3) リクエスト処理スレッド数の遷移例

(1) Webクライアントからの接続数の制御

インプロセスHTTPサーバでは,一度に接続するWebクライアントやプロキシサーバの数の最大値を設定して,リクエスト処理スレッド数を制御します。インプロセスHTTPサーバではWebクライアントからの接続数分のリクエスト処理スレッドを作成するため,Webクライアントからの接続数の最大値は,インプロセスHTTPサーバで作成するリクエスト処理スレッド数の上限となります。

なお,クライアントからの接続要求は,TCP/IPのListenキューに登録されて,リクエスト処理スレッドに渡されます。接続数の上限を超えたクライアントからの接続要求は,Listenキューに蓄えられます。Listenキューに蓄えられたクライアントからの接続要求が指定した最大値を超えた場合,クライアントはサーバへの接続に失敗します。

Webクライアントからの接続数の制御の概要を次の図に示します。

図4-1 Webクライアントからの接続数の制御の概要

[図データ]

(2) リクエスト処理スレッド数の制御

インプロセスHTTPサーバでは,起動時にリクエスト処理スレッドを作成したあと,リクエスト処理スレッドの状態,およびスレッド数を定期的に監視します。インプロセスHTTPサーバにリクエストが集中している場合は,リクエスト処理スレッドを追加して十分な予備スレッドをプールしておき,リクエストが少ない場合は余分にプールしている予備スレッドを削除します。

リクエスト処理スレッド数の制御は次のように実行します。

  1. J2EEサーバ起動時に,指定した数分のリクエスト処理スレッドを作成します。
  2. J2EEサーバの稼働中はリクエスト処理スレッド数を監視します。
  3. 監視のタイミングで,予備スレッド数が指定した最小値より少ない場合は,リクエスト処理スレッドを追加して予備スレッドとしてプールします。また,予備スレッド数が指定した最大値より多い場合は,余分な予備スレッドを削除します。
    なお,J2EEサーバ起動時に作成したスレッド数を維持することもできます。起動時に作成したスレッド数を維持する場合,リクエスト処理スレッドと予備スレッドの総数が起動時に作成したスレッド数以下の場合,予備スレッド数が最大値を超えていても予備スレッドは削除されません。例えば,起動時に作成したスレッド数が8で,予備スレッド数の最大値が5の場合,リクエスト処理スレッドが2で,予備スレッド数が6のときは,予備スレッドは削除されません。

(3) リクエスト処理スレッド数の遷移例

リクエスト処理スレッド数の遷移について,例を使用して説明します。