WebLogic Server 9.0におけるワークロード(作業負荷)管理
Pages: 1, 2, 3, 4, 5

WebLogicワークマネージャとは

先に述べたように、WebLogic Server 9.0では、入ってきた要求を実行キューではなく、ワークマネージャにマッピングします。では、ワークマネージャの仕組みと動作を見ていきましょう。 WebLogicワークマネージャは、非同期実行のためにWebLogic Serverによってサブミットされた要求が送られてくる実行時抽象です。ワークマネージャが複数存在する場合もあります。どのワークマネージャを使用す るかの選択は、デプロイ時に決まります。管理者は、デプロイメント記述子を使用して、任意のサーブレットやEJBをディスパッチするためのワークマネー ジャを変更できます。これについては、「WebLogicワークマネージャのコンフィグレーション」で詳しく説明します。各ワークマネージャには、次の4種類のコンポーネントを含めることができます。

  1. 要求クラス(フェアシェア、応答時間、コンテキスト)
  2. 最小スレッド制約
  3. 最大スレッド制約
  4. 容量

これらの説明に入る前に、2、3注意すべき点について述べておきます。これら4つのコンポーネントはオプションです。さらに、これらのコンポーネン トは、複数のワークマネージャ間で共有できます。たとえば、2つ以上のワークマネージャが、同じ要求クラスを共有できます。これは、これらのワークマネー ジャが内部的に同じ優先度を持つことを意味します。もう1つ単純な例としては、複数のワークマネージャが同じ容量を共有する場合もあります。これは、この 容量を共有するすべてのワークマネージャからの要求の合計が、指定された上限を超えないことを意味します。

WebLogicワークマネージャという用語は、タイマーおよびワークマネージャ仕様とは、意図的に区別して使用しています。この2つの関係については、「タイマーおよびワークマネージャ仕様のサポート」で説明します。

では、この4つのコンポーネントについてさらに詳しく見ていきましょう。

ワークマネージャの要求クラス

要求クラスは、要求の種類を定義したものです。同じ実行時動作を共有する要求は、同じ要求クラスに属している必要があります。「同じ実行時動作」と は、さまざまなことを意味しています。たとえば、同じサーブレット、モジュール、またはアプリケーション全体を複数回呼び出すことなどです。デフォルトで は、各アプリケーションは、唯一の固有の要求クラスに属します。1つの要求クラスを共有する要求はすべて、実行時に同じ優先度を取得します。これらは、 WebLogicスケジューラによって、単一のタイプとして扱われます。要求クラスには、次の3種類が定義できます。

  1. フェアシェア要求クラス
  2. 応答時間要求クラス
  3. コンテキスト要求クラス

1つのワークマネージャは、1種類の要求クラスしか持つことができない点に注意してください。

フェアシェア要求クラス

この要求クラスは、フェアシェアを示す単純な整数値を持っています。この値は、1から1000までの範囲を取ります。フェアシェア値が高いほど、ス レッドの使用率が高くなります。フェアシェアは、システム内で定義されている他のフェアシェアと関連しています。フェアシェアは、複数のフェアシェアが競 合している間は、それぞれの平均スレッド使用率がそのフェアシェアに比例するようなスケジューリングロジックを反映しています。

たとえば、AとBの2つのフェアシェアがあり、それぞれのフェアシェア値が80と20の場合を考えます。両方のフェアシェアが切れ目なく要求されて いる(要求と応答の間に遅延がなく、クライアント数がスレッド数より多い)間は、AまたはBのために1つのスレッドが動作する確率は、それぞれ80%と 20%になる傾向があります。このスケジューリングロジックは、AがBよりもかなり長時間1つのスレッドを使用する傾向がある場合でも、それを保証しま す。

フェアシェア要求クラスを持たないワークマネージャは、排他的なフェアシェアである50を持ちます。

ここでは、フェアシェア要求クラスを持つワークマネージャの例を示します。ワークマネージャは、 weblogic-application.xmlで定義されています。要求クラスは、ワークマネージャの外部で定義しておいて、要求クラス名を使用してワークマネージャから参照することもできる点に注意してください。

<work-manager>
  <name>highfairshare_workmanager</name>
  <fair-share-request-class>
    <name>high_fairshare</name>
    <fair-share>80</fair-share>
  </fair-share-request-class>
</work-manager>

応答時間要求クラス

応答時間要求クラスは、応答時間の目標をミリ秒単位で表す整数値を持ちます。応答時間目標は、他の応答時間目標やフェアシェアと関連があります。応 答時間目標は、要求クラスを差別化するために使用することもできます。我々は、個々の要求に対する応答時間目標を達成しようとするのではありません。その 代わりに、要求クラスに対する許容可能な待ち時間を、観測された平均スレッド使用時間を差し引くことによって計算します。次に、各要求クラスの平均待ち時 間が、許容可能な待ち時間に比例するように、要求をスケジューリングします。たとえば、AとBという2つの要求クラスを持ち、それぞれの応答時間目標が 2000msと5000msの場合を考えます。このとき、それぞれの要求が1つのスレッドを使用する時間はかなり短いものとします。両方の要求クラスが切 れ目なく要求されている(要求と応答の間に遅延がなく、クライアント数がスレッド数より多い)間は、平均応答時間が2対5に保たれるようにスケジューリン グされます。その際、平均応答時間は、予め設定されている目標の常分数または倍数になります。

ここでは、応答時間要求クラスを持つワークマネージャの例を示します。

<work-manager>
  <name>fast_response_time</name>
  <response-time-request-class>
    <name>fast_response_time</name>
    <goal-ms>2000</goal-ms>
  </response-time-request-class>
</work-manager>

コンテキスト要求クラス

これは、複合した要求クラスで、要求のコンテキストと、先に述べた2つの要求クラスとの間のマッピングを提供します。現在のところ、要求をサブミッ トしたユーザのセキュリティ名と、そのユーザが所属するセキュリティグループを見ています。作業スケジュールを行う際には、このセキュリティコンテキスト 情報を見ることによって、正確な要求クラスが決定されます。たとえば、「上級」グループのユーザはすべて高いフェアシェアを取得し、その他のユーザは低い フェアシェアを取得するように、コンテキスト要求クラスを定義することができます。以下に、コンフィグレーション例を示します。

<work-manager>
  <name>context_workmanager</name>"
  <context-request-class>
    <name>test_context</name>
    <context-case>
      <user-name>platinum_user</user-name>
      <request-class-name>high_fairshare</request-class-name>
    </context-case>
    <context-case>
      <user-name>evaluation_user</user-name>
      <request-class-name>low_fairshare</request-class-name>
    </context-case>
  </context-request-class>
</work-manager>

上の例では、ワークマネージャがコンテキスト要求クラスを使って定義されています。この要求クラスには2つのマッピングがあります。1つは上級ユー ザ向け、もう1つは評価ユーザ向けです。これら2つのユーザは、WebLogic Serverのセキュリティレルムで設定されています。このマッピングでは、上級ユーザはすべて高いフェアシェア要求クラスを使用し、評価ユーザは、低い フェアシェア要求クラスを使用するように宣言されています。「high_fairshare」と「low_fairshare」は、2つのフェアシェア要 求クラスの名前です。これらの要求クラスは、アプリケーション内の同じレベルで定義されているか、または、サーバレベルでグローバルに定義されています。

Pages: 1, 2, 3, 4, 5

Next Page »