2.16.3 同時実行スレッド数の制御に必要なパラメタ(URLグループ単位)
ここでは,URLグループ単位でスレッド数を制御する場合の設定について説明します。URLグループ単位でスレッド数を制御する場合は,次の設定が必要になります。
-
Webコンテナ単位の同時実行スレッド数制御の設定
Webコンテナ単位の最大同時実行スレッド数などを設定します。なお,ここで設定した最大同時実行スレッド数は,Webコンテナ上にデプロイされているすべてのWebアプリケーションで共有します。
Webコンテナ単位での同時実行スレッド数制御の設定については,「2.14 Webコンテナ単位での同時実行スレッド数の制御」を参照してください
-
Webアプリケーション単位の同時実行スレッド数制御の設定
Webアプリケーション単位の同時実行スレッド数や,占有スレッド数などを設定します。なお,URLグループ単位での同時実行スレッド数を設定する場合,Webアプリケーション単位での占有スレッド数の設定は必須になります。
Webアプリケーション単位での同時実行スレッド数制御の設定については,「2.15 Webアプリケーション単位での同時実行スレッド数の制御」を参照してください。
-
URLグループ単位の同時実行スレッド数制御の設定
URLグループ単位の同時実行スレッド数制御は,Webアプリケーション単位での同時実行スレッド数制御を設定しているWebアプリケーション内のURLグループに対して,次に示すパラメタを設定します。
-
URLグループ単位の同時実行スレッド数制御の定義名
同時実行スレッド数制御の単位となるURLグループの名称を設定します。
-
最大同時実行スレッド数
URLグループで最大で幾つのスレッドを同時に実行できるかを設定します。
-
占有スレッド数
URLグループの占有スレッド数を設定します。
-
URLグループ単位の実行待ちキューサイズ
URLグループの実行待ちキューサイズを設定します。
-
URLパターン
スレッド数制御の対象となるリクエストURLに振り分けるための,URLパターンを設定します。
-
以降で,URLグループ単位での同時実行スレッド数制御の設定項目の詳細を説明します。
(1) URLグループ単位の最大同時実行スレッド数
URLグループ単位で使用するスレッド数は,URLグループが属するWebアプリケーションのスレッド数です。このため,URLグループ単位でスレッドを一つ使用している場合,そのURLグループを含むWebアプリケーションでもスレッドが一つ実行されていることになります。
なお,URLグループ単位の最大同時実行スレッド数を設定していないリクエストURLについては,Webアプリケーション単位の共有スレッド数が使用されます。Webアプリケーション単位の共有スレッド数は,次のようになります。
- Webアプリケーション単位の共有スレッド数=
-
Webアプリケーション単位の最大同時実行スレッド数※−URLグループ単位の占有スレッド数の合計
- 注※ ここでの最大同時実行スレッド数の値には,次の1.と2.のうち,小さい方の値が適用されます。
-
-
Webコンテナ単位の共有スレッド数
-
Webアプリケーション単位の最大同時実行スレッド数に設定した値
-
このとき,Webアプリケーション単位の共有スレッド数は1以上である必要があります。共有スレッド数が0以下になる場合は,エラーが発生します。詳細は,「2.15.7 Webアプリケーション単位での同時実行スレッド数制御についての注意事項」を参照してください。
(2) URLグループ単位の占有スレッド数
URLグループ単位の占有スレッド数は,特定の業務ロジックをWebアプリケーション内のほかの業務ロジックの影響を受けないで実行させるために設定します。
URLグループ単位の占有スレッド数は,Webアプリケーションで設定されている占有スレッド数の範囲で指定します。このため,URLグループが含まれるWebアプリケーションで占有スレッド数を設定していない場合は,URLグループ単位でも占有スレッド数を設定できないので注意してください。
また,URLグループ単位の同時実行スレッド数制御を設定しているリクエストURLに対するリクエスト数が,URLグループ単位の占有スレッド数を超える場合で,かつURLグループ単位の最大同時実行スレッド数に満たない場合は,Webアプリケーション単位の共有スレッド数を使用してリクエストを処理します。このため,Webアプリケーション単位の共有スレッド数が少ないと,URLグループ単位の最大同時実行スレッド数は,設定値よりも少なくなることがあるので注意してください。
(3) URLグループ単位の実行待ちキュー
URLグループ単位の実行待ちキューは,URLグループ単位の同時実行スレッド数が上限に達したときにリクエストが入るキューです。URLグループ単位の実行待ちキューは,URLグループ単位の同時実行スレッド数の制御を設定した場合に,URLグループごとに作成されます。この実行待ちキューのサイズを設定します。
リクエストは,URLグループ単位の同時実行スレッド数が上限に達していて,URLグループ単位の実行待ちキューに空きがある場合,その実行待ちキューに入ります。URLグループ単位の実行待ちキューの中のリクエストは,処理中のリクエストが完了したあとに,その実行待ちキューから順次取り出され,実行されます。URLグループ単位の同時実行スレッド数が上限に達していて,URLグループ単位の実行待ちキューサイズに空きがない場合はエラーとなり,クライアントにHTTPステータスコード503が返ります。
なお,URLグループ単位の実行待ちキューに入るリクエストは,デフォルトの実行待ちキューやWebアプリケーションの実行待ちキューに入ることはありません。また,URLグループ単位の同時実行スレッド数の制御で設定したリクエストURLに該当しないリクエストについては,Webアプリケーションの実行待ちキューが使用されます。
(4) URLパターンの設定
リクエストURLを振り分けるためのURLパターンを設定します。URLパターンには,Servlet仕様のサーブレットマッピングのURLパターンが指定できます。指定できるURLパターンを次に示します。
-
"/"で始まる文字列
例:/index.jsp
-
"/"で始まり,"/*"で終わる文字列
例:/test/*
-
"*."で始まる文字列
例:*.do
なお,リクエストURLのURLパターンとのマッピング順序については,「2.16.2 URLパターンのマッピング処理」を参照してください。
URLグループ単位で同時実行スレッド数を制御する場合,Webアプリケーション単位での同時実行スレッド数制御,およびWebコンテナでのスレッド数制御も同時に設定する必要があります。URLグループ単位での同時実行スレッド数制御で設定するパラメタを次の表に示します。
設定するパラメタ |
設定単位 |
||
---|---|---|---|
Webコンテナ単位 |
Webアプリケーション単位 |
URLグループ単位 |
|
最大同時実行スレッド数 |
○ |
○ |
○ |
占有スレッド数 |
− |
○ |
○ |
実行待ちキューサイズ |
− |
○ |
○ |
デフォルトの実行待ちキューサイズ |
− |
○ |
− |
URLグループ単位の同時実行スレッド数制御の定義名 |
− |
− |
○ |
制御対象となるURLパターン |
− |
− |
○ |
次に,URLグループ単位での同時実行スレッド数制御の設定について説明します。URLグループ単位での同時実行スレッド数の制御は,サーバ管理コマンドで設定します。なお,Webコンテナ単位での設定パラメタについては,「2.14.2 実行環境での設定(J2EEサーバの設定)」を,Webアプリケーション単位での設定パラメタについては,「2.15.5 実行環境での設定」を参照してください。
サーバ管理コマンドでは,次の内容が設定できます。
-
URLグループ単位の同時実行スレッド数制御の定義名
同時実行スレッド数制御をするURLのグループ名を指定します。グループ名はWebアプリケーション内で一意な名称を指定する必要があります。
使用できる文字は次のとおりです。
-
半角英数字(A〜Z,a〜z,0〜9)
-
半角ハイフン(-)
-
半角アンダーバー(_)
また,文字列の長さは1〜64文字となります。
-
-
URLグループ単位の最大同時実行スレッド数
URLグループで,最大で幾つのスレッドを同時に実行できるかを指定します。設定範囲は次のとおりです。
- 最大同時実行スレッド数の設定範囲
-
1≦最大同時実行スレッド数(URLグループ単位)≦最大同時実行スレッド数(Webアプリケーション単位)
-
URLグループ単位の占有スレッド数
URLグループで,最低限確保するスレッド数(占有スレッド数)を指定します。設定範囲は次のとおりです。
- 占有スレッド数の設定範囲
-
0≦占有スレッド数(URLグループ単位)≦最大同時実行スレッド数(URLグループ単位)
さらに,URLグループ単位の占有スレッド数は,Webアプリケーション単位の占有スレッド数以下である必要があります。
また,Webアプリケーション内のURLグループ単位に設定している占有スレッド数の総和は,次の条件を満たしている必要があります。なお,条件は,Webアプリケーション単位の最大同時実行スレッド数とWebアプリケーション単位の占有スレッド数の値によって異なります。
- Webアプリケーション単位の設定が,最大同時実行スレッド数≠占有スレッド数の場合
-
占有スレッド数(Webアプリケーション単位)≧占有スレッド数の総和(URLグループ単位)
- Webアプリケーション単位の設定が,最大同時実行スレッド数=占有スレッド数の場合
-
占有スレッド数(Webアプリケーション単位)>占有スレッド数の総和(URLグループ単位)
なお,占有スレッド数を設定しない場合は,0を指定します。
-
URLグループ単位の実行待ちキューサイズ
実行スレッド数が最大数に達した場合,リクエストはキューに溜められます。このときの,実行待ちキューサイズをURLグループ単位で指定します。設定範囲は次のとおりです。
- URLグループ単位の実行待ちキューサイズの設定範囲
-
0≦実行待ちキューサイズ(URLグループ単位)≦2,147,483,647
なお,0を設定すると,URLグループ単位の実行待ちキューを使用しない設定になります。このとき,同時実行スレッド数が上限に達すると,リクエストはエラーとなります。
-
制御対象となるURLパターン
同時実行スレッド数の制御対象となるURLを指定します。URLパターンはWebアプリケーション内で一意な名称を指定する必要があります。また,Webアプリケーションのコンテキスト以下を指定してください。
サーバ管理コマンドを使用する場合は,WAR属性ファイルの<thread-control>タグ下の<urlgroup-thread-control>タグで,同時実行スレッド数を設定します。
-
<urlgroup-thread-control-name>タグに,同時実行スレッド数制御の定義名を指定します。
-
<urlgroup-thread-control-max-threads>タグに,URLグループ単位での最大同時実行スレッド数を指定します。
-
<urlgroup-thread-control-exclusive-threads>タグに,占有スレッド数を指定します。
-
<urlgroup-thread-control-queue-size>タグに,URLグループ単位の実行待ちキューサイズを指定します。
-
<urlgroup-thread-control-mapping>タグに,制御対象となるURLパターンを<url-pattern>タグで囲んで指定します。
サーバ管理コマンドのcjgetapppropコマンドで属性ファイルを取得し,属性ファイル編集後に,cjsetapppropコマンドで編集内容を反映させてください。サーバ管理コマンドについては,マニュアル「アプリケーションサーバ アプリケーション設定操作ガイド」の「3. サーバ管理コマンドの基本操作」を参照してください。