Cosminexus V9 アプリケーションサーバ 機能解説 基本・開発編(Webコンテナ)

[目次][用語][索引][前へ][次へ]

2.19.1 同時実行スレッド数の動的変更の概要

ここでは,同時実行スレッド数の動的変更の概要について説明します。

<この項の構成>
(1) 同時実行スレッド数の動的変更の用途
(2) 設定変更の例
(3) 設定変更後の動作
(4) URLグループ単位の同時実行スレッド数制御への影響

(1) 同時実行スレッド数の動的変更の用途

アプリケーションサーバを使用して構築したシステムでは,Webアプリケーション単位の最大同時実行スレッド数,占有スレッド数,および実行待ちキューサイズを,サービスを停止しないで動的に変更できます。Webアプリケーション単位の最大同時実行スレッド数,占有スレッド数,および実行待ちキューサイズは,運用管理コマンド(mngsvrutil)を使用して変更します。

Webアプリケーション単位の最大同時実行スレッド数を変更すると,次のような局面に対応できます。

なお,ここで設定した項目は,サービスを停止すると無効になり,設定内容はJ2EEサーバに保存されません。また,この方法で動的に変更できるのは,Webアプリケーションについての情報だけです。Webコンテナについての設定を変更する場合は,J2EEサーバを再起動しないと有効になりません。

Webコンテナ単位の最大同時実行スレッド数を変更したい場合,また,Webアプリケーションの最大同時実行スレッド数を一時的ではなく恒常的に変更したい場合は,システムの構築時と同じ手順で設定してください。

注意
Webアプリケーションの最大同時実行スレッド数を変更した場合,URLグループ単位の最大同時実行スレッド数や占有スレッド数との関係によっては,URLグループ単位の同時実行スレッド数制御の動作へ影響が出ることがあります。詳細については「2.19.1(4) URLグループ単位の同時実行スレッド数制御への影響」を参照してください。

(2) 設定変更の例

ここでは,特定のWebアプリケーションに対して,スループットを向上し,エラーとなるリクエストを減らしたい場合の,設定変更例を紹介します。この例では,Webアプリケーションの,最大同時実行スレッド数,占有スレッド数,および実行待ちキューサイズを増やしています。なお,同時実行スレッド数の動的変更では,Webコンテナ単位の最大同時実行スレッド数およびURLグループ単位の最大同時実行スレッド数は変更できません。

表2-60 同時実行スレッド数の動的変更の例

パラメタ 変更前の設定値 変更後の設定値
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グループ単位の占有スレッド数の総和