2.17.1 同時実行スレッド数の動的変更の概要
ここでは,同時実行スレッド数の動的変更の概要について説明します。
(1) 同時実行スレッド数の動的変更の用途
アプリケーションサーバを使用して構築したシステムでは,Webアプリケーション単位の最大同時実行スレッド数,占有スレッド数,および実行待ちキューサイズを,サービスを停止しないで動的に変更できます。Webアプリケーション単位の最大同時実行スレッド数,占有スレッド数,および実行待ちキューサイズは,運用管理コマンド(mngsvrutil)を使用して変更します。
Webアプリケーション単位の最大同時実行スレッド数を変更すると,次のような局面に対応できます。
-
Webアプリケーション単位の稼働状態でのパフォーマンスチューニング
クライアントにサービスを提供しながらパフォーマンスをチューニングできます。
-
アクセス状況に応じた一時的なWebアプリケーション単位の最大同時実行スレッド数の変更
アクセス状況に応じて,特定のWebアプリケーションの最大同時実行スレッド数を一時的に増加または減少させたい場合に,対処できます。
-
時間帯に応じた計画的なWebアプリケーション単位の最大同時実行スレッド数の変更
時間帯に応じて,Webアプリケーションの最大同時実行スレッド数を計画的に増加または減少させたい場合に,対処できます。
なお,ここで設定した項目は,サービスを停止すると無効になり,設定内容はJ2EEサーバに保存されません。また,この方法で動的に変更できるのは,Webアプリケーションについての情報だけです。Webコンテナについての設定を変更する場合は,J2EEサーバを再起動しないと有効になりません。
Webコンテナ単位の最大同時実行スレッド数を変更したい場合,また,Webアプリケーションの最大同時実行スレッド数を一時的ではなく恒常的に変更したい場合は,システムの構築時と同じ手順で設定してください。
- 注意事項
-
Webアプリケーションの最大同時実行スレッド数を変更した場合,URLグループ単位の最大同時実行スレッド数や占有スレッド数との関係によっては,URLグループ単位の同時実行スレッド数制御の動作へ影響が出ることがあります。詳細については「2.17.1(4) URLグループ単位の同時実行スレッド数制御への影響」を参照してください。
(2) 設定変更の例
ここでは,特定のWebアプリケーションに対して,スループットを向上し,エラーとなるリクエストを減らしたい場合の,設定変更例を紹介します。この例では,Webアプリケーションの,最大同時実行スレッド数,占有スレッド数,および実行待ちキューサイズを増やしています。なお,同時実行スレッド数の動的変更では,Webコンテナ単位の最大同時実行スレッド数およびURLグループ単位の最大同時実行スレッド数は変更できません。
パラメタ |
変更前の設定値 |
変更後の設定値 |
|
---|---|---|---|
Webコンテナ単位の最大同時実行スレッド数 |
10 |
− |
|
Webアプリケーションの設定 |
最大同時実行スレッド数 |
7 |
8 |
占有スレッド数 |
4 |
5 |
|
実行待ちキューサイズ |
8 |
10 |
(3) 設定変更後の動作
同時実行スレッド数の変更はすぐに反映されます。変更した直後に注意が必要な動作を次に示します。
- 最大同時実行スレッド数を変更した場合
-
-
最大同時実行スレッド数を増加させたとき
Webアプリケーション単位の実行待ち状態のリクエストで,実行できる状態になったリクエストはすぐに実行されます。
-
最大同時実行スレッド数に指定しているスレッド数をすべて使用している状態で,最大同時実行スレッド数を減少させたとき
一時的に変更後の最大同時実行スレッド数を上回るリクエストが同時に実行されます。
-
- 占有スレッド数を変更した場合
-
-
Webコンテナ単位の最大同時実行スレッド数に設定した数のスレッドをすべて使用している状態で,占有スレッド数を増加させたとき
占有スレッド数を増加させたWebアプリケーションに実行待ちのリクエストがあるときは,占有スレッド数分のリクエストはすぐ実行されます。ただし,このとき,一時的にWebコンテナ単位の最大同時実行スレッド数を超えたリクエストが同時に実行されます。
-
占有スレッド数を減少させたとき
占有スレッド数を減少させると,すべてのWebアプリケーション単位で共有するスレッド数が増加します。このときに,実行待ち状態で,すべてのWebアプリケーション単位で共有するスレッド数の増加によって実行できる状態になったリクエストがあれば,すぐに実行されます。
-
- Webアプリケーション単位の実行待ちキューサイズを変更した場合
-
-
Webアプリケーション単位の実行待ちキューで,キューの上限までリクエストの待ちがある状態で,実行待ちキューサイズを減少したとき
実行待ちキューサイズを超えたリクエストはHTTP 503エラーが返ります。
-
(4) URLグループ単位の同時実行スレッド数制御への影響
URLグループ単位の同時実行スレッド数制御を設定しているWebアプリケーションの同時実行スレッド数を動的に変更した場合,URLグループ単位の同時実行スレッド数の設定に影響が出ることがあります。影響が出る変更を次に示します。
- Webアプリケーション単位の最大同時実行スレッド数を減らした場合
-
Webアプリケーション単位の最大同時実行スレッド数の減少によって,次の条件を満たしたとき,URLグループ単位の最大同時実行スレッド数は,一時的にWebアプリケーション単位の同時実行スレッド数になります。
- URLグループ単位の最大同時実行スレッド数が変更される条件
-
URLグループ単位の最大同時実行スレッド数>Webアプリケーション単位の最大同時実行スレッド数
ただし,URLグループ単位の最大同時実行スレッド数の設定値が変更になるわけではありません。動的変更時に設定したスレッド数までWebアプリケーション単位の最大同時実行スレッド数が減少し,URLグループ単位の最大同時実行スレッド数がWebアプリケーション単位の最大同時実行スレッド数を下回ると,URLグループ単位の最大同時実行スレッド数は設定した値で動作します。
なお,この変更によって,実行中のリクエスト処理を継続させるために,一時的に変更後のWebアプリケーション単位の最大同時実行スレッド数を上回るリクエストが同時に実行されることがあります。
- Webアプリケーション単位の占有スレッド数を減らした場合
-
Webアプリケーション単位の占有スレッド数の減少によって,Webアプリケーション内のすべてのURLグループ単位に設定されている占有スレッド数が使用できなくなります。使用できなくなる条件を次に示します。なお,条件は,Webアプリケーション単位の最大同時実行スレッド数と占有スレッド数の関係によって異なります。
- Webアプリケーション単位の最大同時実行スレッド数=Webアプリケーション単位の占有スレッド数の場合
-
次に示す式を満たしたとき,URLグループ単位に設定されている占有スレッド数は使用できなくなります。
Webアプリケーション単位の占有スレッド数≦URLグループ単位の占有スレッド数の総和
- Webアプリケーション単位の最大同時実行スレッド数≠Webアプリケーション単位の占有スレッド数の場合
-
次に示す式を満たしたとき,URLグループ単位に設定されている占有スレッド数は使用できなくなります。
Webアプリケーション単位の占有スレッド数<URLグループ単位の占有スレッド数の総和