2.17.3 同時実行スレッド数を動的に変更したときのWebアプリケーションの動作
ここでは,Webアプリケーションの最大同時実行スレッド数を動的に変更したときのWebアプリケーションの動作について説明します。
- 〈この項の構成〉
(1) 最大同時実行スレッドを変更したことによる動作
最大同時実行スレッド数を変更した場合,Webアプリケーションは次のように動作します。
- 最大同時実行スレッド数を増やした場合
-
Webアプリケーション単位の実行待ち状態だったリクエストのうち,実行可能になったリクエストが直ちに実行されます。
例えば,設定変更によって最大同時実行スレッド数を7から8に変更した場合に,Webアプリケーション単位の実行待ちキューにリクエストがあったときには,その実行待ちキューのリクエストの一つがすぐに実行されることになります。
- 最大同時実行スレッド数を減らした場合
-
実行可能な最大同時実行スレッド数が減少されます。
ただし,最大同時実行スレッド数のスレッドをすべて使用している状態で設定を変更しようとした場合,実行中のスレッド数は減らないため,一時的に最大同時実行スレッド数を超える数のスレッドが実行されます。
例えば,設定変更によって最大同時実行スレッド数を8から7に変更した場合に,その時点で使用されているスレッド数が8個あったときは,一時的に設定変更後の最大同時実行スレッド数を超える8個のスレッドが実行されます。
稼働中のスレッドの一つが終了したときにスレッド数が減らされ,以降は設定値どおり,最大で7個のスレッドが同時実行されるようになります。
(2) 占有スレッド数を変更したことによる動作
占有スレッド数を変更した場合,Webアプリケーションは次のように動作します。
- 占有スレッド数を増やした場合
-
Webアプリケーション単位の実行待ち状態だったリクエストのうち,該当するWebアプリケーションの占有スレッド数が増えたことで実行可能になったリクエストが,直ちに実行されます。
また,アクセスのピーク時など,Webコンテナ単位の最大同時実行スレッド数に設定されているスレッド数をすべて使用している状態で特定のWebアプリケーションの占有スレッド数を増やした場合,そのWebアプリケーションの実行待ちキューにリクエストがあるときには,実行待ちキューのリクエストがすぐに実行されます。これによって,一時的に,Webコンテナ単位の最大同時実行スレッド数を超える数のスレッドが実行されることがあります。
例えば,Webコンテナ単位の最大同時実行スレッド数が10で,WebアプリケーションであるWebAP1とWebAP2でそれぞれ7個と3個のスレッドを使用している状態でWebAP1の占有スレッド数を8に変更した場合,一時的にWebコンテナ単位で11個のスレッドが実行されます。
- 占有スレッド数を減らした場合
-
特定のWebアプリケーションの占有スレッド数を減らすことで,Webコンテナ単位で共有されるスレッド数が増加します。Webアプリケーション単位,URLグループ単位およびデフォルトの実行待ちキューのリクエストのうち,共有スレッド数が増えることで実行可能になったスレッドがある場合は,直ちに実行されます。
(3) Webアプリケーション単位の実行待ちキューサイズを変更したことによる動作
Webアプリケーション単位の実行待ちキューサイズを変更した場合,Webアプリケーションは次のように動作します。
- Webアプリケーション単位の実行待ちキューサイズを増やした場合
-
Webアプリケーション単位の実行待ちキューサイズが直ちに増やされます。
- Webアプリケーション単位の実行待ちキューサイズを減らした場合
-
Webアプリケーション単位の実行待ちキューで待っているリクエストの数よりも少ない値にWebアプリケーション単位の実行待ちキューサイズを変更した場合,その実行待ちキューサイズを超えるリクエストはHTTP 503エラーとして返却されます。