8.3.4 Webアプリケーションの同時実行数を制御する
Webアプリケーションの同時実行数制御では,Webフロントシステムの場合に,WebサーバがWebブラウザなどのクライアントから受け付けたHTTPリクエストの処理を,同時に幾つのスレッドで実行するかを制御します。
- 〈この項の構成〉
(1) 同時実行スレッド数制御の違い
Webコンテナ単位,Webアプリケーション単位,およびURLグループ単位の同時実行スレッド数制御の違いは次のとおりです。
- Webコンテナ単位
-
Webコンテナ全体で同時にHTTPリクエストを処理するスレッド数を設定できます。
- Webアプリケーション単位
-
Webコンテナ上で動作するWebアプリケーションごとに,同時にHTTPリクエストを処理するスレッド数を設定できます。
- URLグループ単位
-
HTTPリクエストをWebアプリケーション内の特定の業務処理(業務ロジック)に対応するURLに振り分ける場合,振り分け先URLの処理ごとに,同時にHTTPリクエストを処理するスレッド数を設定できます。
Webコンテナ単位,Webアプリケーション単位,およびURLグループ単位の同時実行スレッド数の関係を次の図に示します。
- 注意事項
-
Webコンテナ単位の最大同時実行スレッド数の制御は,Webアプリケーション単位での同時実行スレッド数の制御を無効にした場合だけ有効になります。
Webアプリケーション単位での同時実行スレッド数の制御を有効にする場合,Webコンテナ単位の最大同時実行スレッド数のチェックは,Webアプリケーション単位での同時実行スレッド数制御で実施されます。詳細はマニュアル「アプリケーションサーバ 機能解説 基本・開発編(Webコンテナ)」の「2.15.6 同時実行スレッド数および実行待ちキューサイズの設定例(Webアプリケーション単位)」を参照してください。
Webアプリケーションに対するリクエストの実行は,Webコンテナ単位,Webアプリケーション単位,およびURLグループ単位に設定した同時実行スレッド数に制限されます。Webコンテナ単位,Webアプリケーション単位およびURLグループ単位に設定した同時実行スレッド数を超えるリクエストは,それぞれの実行待ちキューに入ります。
(2) 選択の指針
同時実行スレッド数制御の単位を選択するときの指針について説明します。
なお,同時実行スレッド数を制御する機能の詳細については,マニュアル「アプリケーションサーバ 機能解説 基本・開発編(Webコンテナ)」の「2.13 同時実行スレッド数の制御の概要」を参照してください。
-
Webアプリケーション単位の選択の指針
Webアプリケーション単位の同時実行数を制御することで,J2EEサーバがTCP接続要求だけではなく,Webアプリケーションの実行待ちキューを管理できるようになります。このため,J2EEサーバ上で実行するWebアプリケーションが一つだけの場合でも,Webアプリケーション単位の同時実行スレッド数を設定することをお勧めします。
Webアプリケーション単位での同時実行スレッド数の設定は,Webコンテナ単位で設定する場合に比べて,次のような利点があります。
-
Webアプリケーションごとの同時実行スレッド数に上限を設けることで,特定の業務に対応するWebアプリケーションへのリクエストが増大した場合に,そのWebアプリケーションがWebコンテナ全体の処理能力を占有しないようにできます。これによって,ほかの業務も滞りなく実行できます。
-
CPUやI/O処理に掛かる負荷が異なる複数のWebアプリケーションがWebコンテナ上にある場合,それぞれの条件に適した同時実行スレッド数が設定できます。
-
Webアプリケーションごとにリクエストの実行待ちキューサイズが設定できるので,Webアプリケーションの特徴に応じた実行待ちキュー管理ができます。また,Webアプリケーション単位の実行待ちキュー以上のリクエストが送信された場合には,クライアントにHTTPレスポンスコードで通知できます。
なお,Webアプリケーション単位の同時実行スレッド数は,稼働中のJ2EEサーバでも動的に変更できます。稼働中のJ2EEサーバで実行するWebアプリケーションの同時実行スレッド数の動的変更の手順については,マニュアル「アプリケーションサーバ 機能解説 基本・開発編(Webコンテナ)」の「2.17.2 同時実行スレッド数の動的変更の流れ」を参照してください。
-
-
URLグループ単位の選択の指針
Webアプリケーション単位で同時実行スレッド数を制御している場合に,さらに業務ロジック単位で同時実行スレッド数の制御をしたいときには,URLグループ単位で同時実行スレッド数を制御します。
Webアプリケーションが次のような業務ロジックを含む場合,URLグループ単位の設定を検討してください。
-
ほかの処理に影響を受けないで優先して実行したい業務ロジック
-
ほかの処理に比べて処理時間が掛かる,またはCPUやI/Oの負荷が大きい業務ロジック
URLグループ単位での同時実行スレッド数の設定は,Webアプリケーション単位だけの設定に比べて,次のような利点があります。
-
重要度が高い業務ロジック(URLグループ)には,確実に実行するためのスレッド数を割り当てられます。これによって,ほかの業務ロジックに対するリクエスト数が増大した場合も,Webアプリケーション全体の同時実行スレッド数をその業務ロジックに占有されないで,重要度が高い業務ロジックを実行できます。
-
処理時間が掛かる業務ロジック(URLグループ)の同時実行数に上限を設けることで,特定の業務ロジックによってWebアプリケーション全体の同時実行数が占有されないように制御できます。
-
Webアプリケーション内にCPUやI/Oの負荷が異なる複数の業務ロジック(URLグループ)がある場合は,業務ロジックに応じた同時実行数が設定できます。
-
Webアプリケーション内の業務ロジック(URLグループ)ごとにリクエストの待ち行列長(実行待ちキューのキューサイズ)が設定できるので,業務ロジックの特徴に応じた実行待ちキューを管理できます。また,このURLグループ単位の実行待ちキューがあふれた場合,クライアントにHTTPレスポンスコード503(Service Temporarily Unavailable)を通知できます。
-