2.13.2 同時実行スレッド数制御のパラメタ
同時実行スレッド数制御をする場合,最大同時実行スレッド数,占有スレッド数,実行待ちキューサイズなどのパラメタでスレッド数を制御します。
ここでは,スレッド数を制御するための主なパラメタについて説明します。
(1) 最大同時実行スレッド数
最大同時実行スレッド数とは,利用できる全体のスレッド数のうち,同時実行スレッド数制御の対象となるリクエストを最大で同時に実行できるスレッド数です。
最大同時実行スレッド数は,Webコンテナ単位,Webアプリケーション単位,およびURLグループ単位で設定します。
(2) 占有スレッド数
占有スレッド数とは,利用できる全体のスレッドのうち,同時実行スレッド数制御の対象となるリクエストを確実に実行できるスレッド数です。Webアプリケーション単位,およびURLグループ単位で設定することで,Webアプリケーションごと,またはURLグループごとにスレッド数を最低限確保できます。
(3) 実行待ちキューサイズ
同時実行スレッド数制御の対象となるリクエストが,同時実行スレッド数の上限に達した場合に,リクエストが入るキューサイズを指定できます。キューサイズには,キューに格納するリクエストの個数を指定します。
実行待ちキューにリクエストが格納される条件を次に示します。
-
同時実行スレッド数<最大同時実行スレッド数で,かつ同時実行スレッド数≧占有スレッド数の場合に,使用できる共有スレッド数がないとき
-
同時実行スレッド数≧最大同時実行スレッド数の場合
なお,実行待ちキューに空きがない場合は,リクエストは処理されないで,クライアントにはエラーが返ります。
実行待ちキューサイズは,Webアプリケーション単位,およびURLグループ単位で設定できます。
(4) 共有スレッド数
共有スレッド数とは,利用できるスレッドのうち,占有されないスレッド数です。共有スレッド数には,Webコンテナの共有スレッド数と,Webアプリケーションの共有スレッド数があります。
-
Webコンテナの共有スレッド数
Webコンテナの共有スレッド数とは,Webコンテナ上にデプロイされているすべてのWebアプリケーションで共有するスレッド数です。
-
Webアプリケーションの共有スレッド数
Webアプリケーションの共有スレッド数とは,Webアプリケーションに含まれるすべての処理で共有するスレッド数です。
なお,共有スレッド数は,最大同時実行スレッド数と占有スレッド数から導き出します。
共有スレッド数の算出のしかたについては,「2.13.2(5) 共有スレッド数の算出のしかた」を参照してください。
(5) 共有スレッド数の算出のしかた
ここでは,Webコンテナの共有スレッド数と,Webアプリケーションの共有スレッド数の算出のしかたについて説明します。なお,Webアプリケーション単位での同時実行スレッド数制御の設定をしている場合の,Webアプリケーションの共有スレッド数は,URLグループ単位の同時実行スレッド数制御を設定しているかどうかで異なります。
また,URLグループには共有スレッド数はありません。Webアプリケーション内にURLグループ単位の同時実行スレッド数制御を設定している場合は,Webアプリケーション単位の共有スレッド数を使用します。
-
Webコンテナ上に,占有スレッド数を設定したWebアプリケーションがある場合の共有スレッド数は,次のとおりです。
- Webコンテナの共有スレッドの総数=
-
Webコンテナの最大同時実行スレッド数−Webアプリケーション単位の占有スレッド数の合計※
注※ WebコンテナにデプロイされているすべてのWebアプリケーションに設定されている,占有スレッド数の合計となります。
各Webアプリケーションに設定した占有スレッド数は,Webアプリケーションで最低限確保するためのスレッド数です。このスレッド数は,ほかのWebアプリケーションのリクエスト処理には使用されません。
-
Webアプリケーションの共有スレッド数(URLグループ単位の同時実行スレッド数制御を設定している場合)
- Webアプリケーションの共有スレッド数=
-
Webアプリケーション単位の最大同時実行スレッド数−URLグループ単位の占有スレッド数の合計※
注※ Webアプリケーション内に設定されているすべてのURLグループの占有スレッド数の合計です。
-
Webアプリケーションの共有スレッド数(URLグループ単位の同時実行スレッド数制御を設定していない場合)
- Webアプリケーションの共有スレッド数=
-
Webアプリケーション単位の最大同時実行スレッド数
同時実行スレッド数が,次の図に示すとおり設定されている場合の,WebコンテナおよびWebアプリケーションの共有スレッド数の算出例を説明します。
-
Webコンテナの共有スレッド数=A−(Bの合計)
この図の場合,Webコンテナの共有スレッド数は7−(2+0)で,5になります。
-
Webアプリケーション1の共有スレッド数=C−(Dの合計)
Webアプリケーション1には,URLグループ単位の占有スレッド数が指定されています。この図では,共有スレッド数は3−(2+0)で,1になります。
-
Webアプリケーション2の共有スレッド数=Webコンテナの共有スレッド数
Webアプリケーション2には,同時実行スレッド数制御の設定はありません。このため,Webアプリケーション2の共有スレッド数は,Webコンテナの共有スレッド数が適用されます。この図では,共有スレッド数は5になります。
-
Webアプリケーション3の共有スレッド数=最大同時実行スレッド数
Webアプリケーション3には,URLグループ単位の占有スレッド数が指定されていません。このため,Webアプリケーション3の共有スレッド数はWebアプリケーション3の最大同時実行スレッド数が適用されます。この図では,共有スレッド数は2になります。