JSP 2.0,2.1 JSP ページ ISO-8859-1
2.18 URL グループ単位での同時実行スレッド数の制 御
2.18.7 同時実行スレッド数および実行待ちキューサイズの設定例(URL グループ単位)
同時実行スレッド数および URL グループ単位の実行待ちキューサイズの設定例について説明します。こ こでは,Web サーバ連携機能を使用する場合の例について説明します。
(1) 説明で使用する Web アプリケーションの設定例
この例では,Web コンテナに二つの Web アプリケーションがデプロイされていて,そのうちの一つの Web アプリケーションに Web アプリケーション単位での同時実行スレッド数制御および URL グループ 単位の同時実行スレッド数制御がされているものとします。設定内容を次に示します。
• Web サーバの最大同時接続数:40
• Web コンテナ単位の最大同時実行スレッド数:8
• デフォルトの実行待ちキューサイズ:5
• Web アプリケーション単位の同時実行スレッド数制御の設定
Web アプリケーション A に次の内容が設定されているものとします。なお,Web アプリケーション B では,Web アプリケーション単位の同時実行スレッド数制御の設定はありません。
Web アプリケーション名 最大同時実行スレッド数 占有スレッド数 Web アプリケーション単位 の実行待ちキューサイズ
Web アプリケーション A 7 3 5
• URL グループ単位の同時実行スレッド数制御の設定
Web アプリケーション A では,次に示す URL グループの設定がされているものとします。なお,
Control C には,URL グループ単位の同時実行スレッド数制御の設定はありません。
URL グループ名 URL パターン 最大同時実行スレッ
ド数 占有スレッド数
URL グループ単位の 実行待ちキューサイ
ズ
Control A /health_check.jsp 1 1 1
Control B /create_pdf 3 2 5
URL グループ単位でスレッド数を制御する場合の例を,次の図に示します。
図 2‒23 URL グループ単位の設定例
(2) 各 Web アプリケーションで使用できるスレッド数
図 2-23 の設定の場合に使用できる最大同時実行スレッド数,占有スレッド数,および実行待ちキューサイ ズについて,Web アプリケーションまたは URL グループごとに説明します。なお,説明の項番は,図中 の項番と対応しています。
1. Web アプリケーション A
Web アプリケーション A では同時実行スレッド数制御を設定しています。また,Web アプリケー ション A 内の業務ロジック(Control A および Control B)には URL グループ単位の同時実行スレッ ド数制御を設定しています。
ここでは,Web アプリケーション A のスレッド数について説明します。
• 最大同時実行スレッド数および占有スレッド数
最大同時実行スレッド数および占有スレッド数が設定されているので,それぞれ設定された値まで スレッド数を使用できます。
Web アプリケーション A の同時に実行できるスレッド数は最大で 7 スレッドです。そのうち,3 スレッドは,Web アプリケーション A で最低限確保できる占有スレッド数となります。
• 共有スレッド数
Web アプリケーション A 全体で使用できる共有スレッド数は,Web アプリケーション A の最大同 時実行スレッド数−占有スレッド数の合計となります。この場合 7−3 となるので,共有スレッド数 は 4 となります。
• Web アプリケーション単位の実行待ちキューサイズ
Web アプリケーション A では Web アプリケーション単位の実行待ちキューサイズを指定してい ます。Web アプリケーション A 全体で同時に 7 スレッド使用している場合,リクエストは最大で 5 個,Web アプリケーション単位の実行待ちキューにたまります。なお,このキューは,Web ア プリケーション内の業務ロジックのうち,URL グループ単位の同時実行スレッド数制御を設定して いない,Control C の業務ロジックへのリクエストに使用されます。
2. Control A(/health_check.jsp へのリクエスト)
• 最大同時実行スレッド数および占有スレッド数
Control A では,最大同時実行スレッド数および占有スレッド数が設定されているので,それぞれ 設定された値までスレッド数を使用できます。
Control A では,同時に実行できるスレッド数は最大で 1 スレッドです。この 1 スレッドは Control A で最低限確保できる占有スレッドでもあります。なお,Control A の占有スレッド数は Web アプリケーション A の占有スレッドのうちの一つとなります。
• URL グループ単位の実行待ちキューサイズ
Control A では URL グループ単位の実行待ちキューサイズを指定しています。Control A で 1 ス レッド使用している場合,リクエストは最大で 1 個,URL グループ単位の実行待ちキューにたまり ます。
3. Control B(/create_pdf へのリクエスト)
• 最大同時実行スレッド数および占有スレッド数
Control B では,最大同時実行スレッド数および占有スレッド数が設定されているので,それぞれ 設定された値までスレッド数を使用できます。
Control B では,同時に実行できるスレッド数は最大で 3 スレッドです。そのうち 2 スレッドは,
Control B で最低限確保できる占有スレッドです。なお,Control B の占有スレッド数は Web アプ リケーション A の占有スレッドのうちの二つとなります。
• URL グループ単位の実行待ちキューサイズ
Control B では URL グループ単位の実行待ちキューサイズを指定しています。Control B で 3 ス レッド使用している場合,リクエストは最大で 5 個,URL グループ単位の実行待ちキューにたまり ます。
4. Control C の処理
Web アプリケーション A 内の,Control C へのリクエストに対しては,同時実行スレッド数制御を設 定していません。
このため,次のように動作します。
• 最大同時実行スレッド数
Web アプリケーション A の共有スレッド数が最大同時実行スレッド数になります。Web アプリ ケーション A の共有スレッド数は 4 スレッドであるため,Control C の処理の最大同時実行スレッ ド数は 4 になります。
また,同時実行スレッド数制御を設定してないため,占有スレッド数はありません。このため,
Control A または B へのアクセスが集中し,Web アプリケーション A 内で使用できるスレッドが なくなると,Control C の業務ロジックの処理は実行待ちになります。
• Web アプリケーション単位の実行待ちキューサイズ
Control C の業務ロジックの処理で実行待ちが発生した場合,これらの処理へのリクエストは,
キューにたまります。Control C の業務ロジックでは URL グループ単位の実行待ちキューサイズ を指定していないため,キューは Web アプリケーション A の実行待ちキューにためられます。リ クエストは,最大で 5 個,キューにたまります。
5. Web アプリケーション B
Web アプリケーション B では,Web アプリケーション単位の同時実行スレッド制御を設定していま せん。
このため,次のように動作します。
• 最大同時実行スレッド数
Web コンテナの共有スレッド数が最大同時実行スレッド数になります。Web コンテナの共有ス レッド数は,次の式で求められます。
Web コンテナの最大同時実行スレッド数−Web アプリケーション A の占有スレッド数
この例の場合,8−3 となるため,Web アプリケーション B の最大同時実行スレッド数は 5 になり ます。
• デフォルトの実行待ちキューサイズ
Web アプリケーション B で実行待ちが発生した場合,Web アプリケーション B へのリクエスト は,キューにたまります。Web アプリケーション B では Web アプリケーション単位の実行待ち キューサイズを指定していないため,キューはデフォルトの実行待ちキューにためられます。リク エストは,最大で 5 個,キューにたまります。
参考
Web コンテナでは,スレッドは静的コンテンツやリクエストのエラー処理にも使用されます。これらの 目的で使用されるスレッド数は,次の式から求められます。
Web サーバの処理スレッド数−(Web コンテナ単位の最大同時実行スレッド数+実行待ちキューサイ ズの総和※)
注※ 実行待ちキューサイズの総和とは,この図の場合,Web コンテナ,Web アプリケーション A,Control A,および Control B の実行待ちキューサイズを足した値となります。
このため,この図の例の場合,40−(8 +(5 + 5 + 1 + 5))となり,静的コンテンツやリクエス トのエラー処理に使用されるスレッド数は,16 スレッドとなります。