17 パーティション・ワーク・マネージャの構成

パーティション・ワーク・マネージャは、パーティション間にスレッド使用ポリシーを設定します。各パーティションのワーク・マネージャ・スレッド数の制限、および各パーティションのスレッド使用時間に基づいたスレッド使用割当ての管理を行うよう構成できます。相対的なスレッドの使用を規定する際に重要なことは、同じWebLogic Serverインスタンスを共有する様々なパーティション間で適切なサービスの質(QoS)および公平性を提供することです。それが実現できないと、1つのパーティションのアプリケーションによって他のパーティションのスレッド・リソースが不足して、適切に機能しなくなる可能性があります。

注意:

WebLogic Server Multitenantドメイン・パーティション、リソース・グループ、リソース・グループ・テンプレート、仮想ターゲットおよびリソース消費管理は、WebLogic Server 12.2.1.4.0で非推奨になり、次のリリースで削除されます。

この章の内容は次のとおりです。

パーティション・ワーク・マネージャ: 概要

パーティション・ワーク・マネージャは、パーティション内でのリソース管理を提供します。

管理者は、ランタイム環境およびその共有方法を把握しています。パーティション・ワーク・マネージャをドメイン・レベルで構成し、それらを作成時にパーティションに割り当てます。これらの事前定義済パーティション・ワーク・マネージャによって、管理者はワーク・マネージャ構成を標準化できます(たとえば、ビジネスで重要なアプリケーションが含まれるすべてのパーティションが、ビジネスで重要なパーティション・ワーク・マネージャを参照できます)。

管理者は、特定のパーティション(場合によってはすべてのパーティション)用にパーティション・ワーク・マネージャをカスタマイズする必要がある場合もあります。このシナリオでは、パーティション・ワーク・マネージャをパーティション構成内に(埋め込んで)構成します。このユースケース用にパーティション・ワーク・マネージャ構成を事前定義する必要はありません。

複数のドメイン・パーティションで使用するためにドメインにパーティション・ワーク・マネージャを定義できます。または、特定のパーティションのみで使用するためにそのドメイン・パーティション自体にパーティション・ワーク・マネージャ属性を定義できます。パーティション・ワーク・マネージャが定義されていない場合は、パーティション・ワーク・マネージャ設定のデフォルト値が適用されます。

パーティション・ワーク・マネージャは複数のドメイン・パーティションに使用できます。ただし、ドメイン・パーティションは1つのパーティション・ワーク・マネージャにのみ関連付けることができます。

パーティション構成には次のいずれかを含めることができます。

  • ドメイン・レベルで構成されているパーティション・ワーク・マネージャを参照するための<partition-work-manager-ref>

  • パーティション構成内にパーティション・ワーク・マネージャ設定を埋め込むための<partition-work-manager>

  • パーティション・ワーク・マネージャ設定のデフォルト値を適用する場合は<partition-work-mananger><partition-work-manager-ref>のどちらもなし

パーティション・ワーク・マネージャの構成: 主なステップ

パーティション・ワーク・マネージャは、パーティション内のワーク・マネージャによるスレッドの使用を制限する一連のポリシーを定義します。これらはドメインには適用されません。パーティション・ワーク・マネージャを構成するには、次の主なステップを実行します。

  1. パーティション・ワーク・マネージャの名前を入力します。
  2. オプションで、フェア・シェア値(すべてのパーティションのスレッド使用量と比較して、そのパーティションに必要なスレッド使用率)を入力します。WebLogic Serverドメインで実行されているすべてのパーティションの値の合計が100になるようにすることをお薦めします。デフォルトでは、パーティションのフェア・シェア値は50です。
  3. オプションで、最小スレッド数制約値(パーティションに構成されている最小スレッド制約を満たすために作成できるスタンバイ・スレッド数の上限)を入力します。

    最小スレッド制約により、サーバーがデッドロックを防止するためにワーク・マネージャに割り当てるスレッド数が保証されます。これでワーク・マネージャは構成済のフェア・シェアより多くのスレッド使用時間を受け取り、パーティションは同じWebLogic Serverインスタンスの他のパーティションと比較してより多くのスレッド使用時間を取得できます。

    オプションで、WebLogic Serverドメインに構成されたパーティションごとに最小スレッド制約値の制限を指定できます。構成されると、パーティションに構成された最小スレッド制約値に上限が設定されます。パーティションにおけるすべての最小スレッド制約の構成値の合計がこの構成値を超えた場合、警告メッセージが記録され、WebLogic Serverはスレッド・プールが制約に割り当てているスレッド数を減らします。

    デフォルトでは、パーティションに最小スレッド制約制限は設定されていません。

  4. オプションで、最大スレッド数制約値(いつでも自己チューニング・スレッド・プールがパーティションで処理できる同時リクエストの最大数)を入力します。

    最大スレッド制約値は、パーティションがスレッド・リソースのフェア・シェアを超えて使用しないようにする場合、特にスレッドがI/Oでブロックされ、応答してしないリモート・サーバーからのレスポンスを待機している場合などの異常な状況において役立ちます。そのようなシナリオで最大スレッド制約を設定すると、一部のスレッドがWebLogic Serverインスタンスの他のパーティションからのリクエストの処理に確実に使用できるようになります。

  5. オプションで、共有容量の制約値(割合としての、サーバー内のパーティションに存在できるリクエストの総数)を入力します。

    パーティションの作業リクエストの数を制限するワーク・マネージャのパーティション共有容量。この制限には、実行中の作業リクエストまたはキューに入れられて使用可能なスレッドを待機しているワーク・リクエストが含まれます。制限を超えると、WebLogic Serverはパーティションから発行された特定のリクエストの拒否を開始します。値は、WebLogic Serverインスタンス全体でリクエスト数を抑制するOverloadProtectionMBeansharedCapacityForWorkManagersオプションの構成に従って、WebLogic Server全体の容量の割合で表されます。ワーク・マネージャのパーティション共有容量は、1から100パーセントの間の値にする必要があります。

パーティション・ワーク・マネージャの定義: WLSTの例

これらのサンプル・スクリプトでは、WLSTを使用してパーティション・ワーク・マネージャを定義する方法を示します。

パーティション・ワーク・マネージャを定義するには、ドメイン・レベルのパーティション・ワーク・マネージャを構成してそれをパーティションに関連付けるか、ドメイン・パーティションでパーティション・ワーク・マネージャ属性を定義してそのパーティションのみで使用します。

ドメイン・レベルのパーティション・ワーク・マネージャの構成: WLSTの例

次の例では、ドメイン・レベルのパーティション・ワーク・マネージャ(myPartitionWorkManager)を作成して構成します。

# Creates a Partition Work Manager at the domain level
edit()
startEdit()
cd('/')
cmo.createPartitionWorkManager('myPartitionWorkManager')
activate()
 
# Configures the Partition Work Manager
startEdit()
cd('/PartitionWorkManagers/myPartitionWorkManager')
cmo.setSharedCapacityPercent(50)
cmo.setFairShare(50)
cmo.setMinThreadsConstraintCap(0)
cmo.setMaxThreadsConstraint(-1)
activate()

パーティションのパーティション・ワーク・マネージャへの関連付け: WLSTの例

パーティション・ワーク・マネージャは複数のドメイン・パーティションに使用できます。ただし、ドメイン・パーティションは1つのパーティション・ワーク・マネージャにのみ関連付けることができます。次の例では、ドメイン・レベルのパーティション・ワーク・マネージャ(myPartitionWorkManager)をパーティション(Partition-0)に関連付けます。

# Associate a domain-level Partition Work Manager with a partition.
edit()
startEdit()
cd('/Partitions/Partition-0')
cmo.destroyPartitionWorkManager(None)
cmo.setPartitionWorkManagerRef(getMBean('/PartitionWorkManagers/myPartitionWorkManager'))
activate()

パーティションでのパーティション・ワーク・マネージャ属性の定義: WLSTの例

次の例では、ドメイン・パーティション(Partition-1)でパーティション・ワーク・マネージャ属性を定義して、そのパーティションのみで使用されるようにします。

# Defines Partition Work Manager attributes within the partition
edit()
startEdit()
cd('/Partitions/Partition-1')
cmo.createPartitionWorkManager('Partition-1-PartitionWorkManager')
 
cd('/Partitions/Partition-1/PartitionWorkManager/Partition-1-PartitionWorkManager')
cmo.setSharedCapacityPercent(50)
cmo.setFairShare(50)
cmo.setMinThreadsConstraintCap(0)
cmo.setMaxThreadsConstraint(-1)
activate()

config.xmlファイル内のPartition-0およびPartition-1で定義されたパーティション・ワーク・マネージャ要素に注目してください。

  <partition>
    <name>Partition-0</name>
    <resource-group>
      <name>default</name>
    </resource-group>
    <default-target>VirtualTarget-0</default-target>
    <available-target>VirtualTarget-0</available-target>
    <realm>myrealm</realm>
    <partition-id>318e0d69-a71a-4fa6-bd7e-3d64b85ec2ed</partition-id>
    <system-file-system>
      <root>C:\Oracle\Middleware\Oracle_Home\user_projects\domains\base_domain/partitions/Partition-0/system</root>
      <create-on-demand>true</create-on-demand>
      <preserved>true</preserved>
    </system-file-system>
    <partition-work-manager-ref>myPartitionWorkManager</partition-work-manager-ref>
  </partition>
  <partition>
    <name>Partition-1</name>
    <resource-group>
      <name>default</name>
    </resource-group>
    <default-target>VirtualTarget-1</default-target>
    <available-target>VirtualTarget-1</available-target>
    <realm>myrealm</realm>
    <partition-id>8b7f6bf7-5440-4edf-819f-3674c630e3f1</partition-id>
    <system-file-system>
      <root>C:\Oracle\Middleware\Oracle_Home\user_projects\domains\base_domain/partitions/Partition-1/system</root>
      <create-on-demand>true</create-on-demand>
      <preserved>true</preserved>
    </system-file-system>
    <partition-work-manager>
      <name>Partition-1-PartitionWorkManager</name>
      <shared-capacity-percent>50</shared-capacity-percent>
      <fair-share>50</fair-share>
      <min-threads-constraint-cap>0</min-threads-constraint-cap>
      <max-threads-constraint>-1</max-threads-constraint>
    </partition-work-manager>
  </partition>
  <partition-work-manager>
    <name>myPartitionWorkManager</name>
    <shared-capacity-percent>50</shared-capacity-percent>
    <fair-share>50</fair-share>
    <min-threads-constraint-cap>0</min-threads-constraint-cap>
    <max-threads-constraint>-1</max-threads-constraint>
  </partition-work-manager>
</domain>

パーティション・ワーク・マネージャの構成: 関連タスクおよびリンク

参照先の情報では、Oracle Enterprise Manager Fusion Middleware Control (FMWC)およびOracle WebLogic Server管理コンソールを使用してパーティション・ワーク・マネージャを構成するステップを示します。