Hitachi

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


2.16.3 同時実行スレッド数の制御に必要なパラメタ(URLグループ単位)

ここでは,URLグループ単位でスレッド数を制御する場合の設定について説明します。URLグループ単位でスレッド数を制御する場合は,次の設定が必要になります。

  1. Webコンテナ単位の同時実行スレッド数制御の設定

    Webコンテナ単位の最大同時実行スレッド数などを設定します。なお,ここで設定した最大同時実行スレッド数は,Webコンテナ上にデプロイされているすべてのWebアプリケーションで共有します。

    Webコンテナ単位での同時実行スレッド数制御の設定については,「2.14 Webコンテナ単位での同時実行スレッド数の制御」を参照してください

  2. Webアプリケーション単位の同時実行スレッド数制御の設定

    Webアプリケーション単位の同時実行スレッド数や,占有スレッド数などを設定します。なお,URLグループ単位での同時実行スレッド数を設定する場合,Webアプリケーション単位での占有スレッド数の設定は必須になります。

    Webアプリケーション単位での同時実行スレッド数制御の設定については,「2.15 Webアプリケーション単位での同時実行スレッド数の制御」を参照してください。

  3. 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.のうち,小さい方の値が適用されます。
  1. Webコンテナ単位の共有スレッド数

  2. 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パターンを次に示します。

なお,リクエストURLのURLパターンとのマッピング順序については,「2.16.2 URLパターンのマッピング処理」を参照してください。

URLグループ単位で同時実行スレッド数を制御する場合,Webアプリケーション単位での同時実行スレッド数制御,およびWebコンテナでのスレッド数制御も同時に設定する必要があります。URLグループ単位での同時実行スレッド数制御で設定するパラメタを次の表に示します。

表2‒50 URLグループ単位でスレッド数を制御する場合の設定パラメタ

設定するパラメタ

設定単位

Webコンテナ単位

Webアプリケーション単位

URLグループ単位

同時実行スレッド数の制御をするかどうか

最大同時実行スレッド数

占有スレッド数

実行待ちキューサイズ

デフォルトの実行待ちキューサイズ

URLグループ単位の同時実行スレッド数制御の定義名

制御対象となるURLパターン

(凡例) ○:設定する −:該当しない

次に,URLグループ単位での同時実行スレッド数制御の設定について説明します。URLグループ単位での同時実行スレッド数の制御は,サーバ管理コマンドで設定します。なお,Webコンテナ単位での設定パラメタについては,「2.14.2 実行環境での設定(J2EEサーバの設定)」を,Webアプリケーション単位での設定パラメタについては,「2.15.5 実行環境での設定」を参照してください。

サーバ管理コマンドでは,次の内容が設定できます。

サーバ管理コマンドを使用する場合は,WAR属性ファイルの<thread-control>タグ下の<urlgroup-thread-control>タグで,同時実行スレッド数を設定します。

サーバ管理コマンドのcjgetapppropコマンドで属性ファイルを取得し,属性ファイル編集後に,cjsetapppropコマンドで編集内容を反映させてください。サーバ管理コマンドについては,マニュアル「アプリケーションサーバ アプリケーション設定操作ガイド」の「3. サーバ管理コマンドの基本操作」を参照してください。