プライマリ・コンテンツに移動
Oracle® Fusion Middleware WebLogic Server Multitenantの使用
12c (12.2.1)
E67376-02
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

20 パーティション同時管理対象オブジェクトの構成

この章では、WebLogic Server Multitenant (MT)でパーティション・レベルの同時管理対象オブジェクト・テンプレートおよび同時制約を構成する方法について説明します。この章の説明に従い、WebLogic Server管理コンソールを使用して、パーティションCMOを構成できます。

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

パーティション同時管理対象テンプレートの構成: 概要

Concurrency Utilities for Java EE 1.0 (JSR 236)は、サーブレットやEJBなどのJava EEアプリケーション・コンポーネントに非同期実行機能を提供する標準APIを実装しています。WebLogic Serverでは、同時管理対象オブジェクト(CMO)がJava EEアプリケーションに対して同時実行機能を提供しています。同時管理対象オブジェクトを構成してから、それをアプリケーション・コンポーネントが使用できるようにすることができます。

ドメインおよびサーバー・レベルのCMOに対するサポートの提供に加えて、WebLogic Serverでは、パーティション・スコープのタスクを実行するためのパーティション・レベルのCMOテンプレートも提供されます。このドキュメントでは、パーティションに適用される場合のCMOテンプレートについてのみ説明します。

同時管理対象オブジェクト・コンポーネント

同時実行性ユーティリティのプライマリ・コンポーネントは次のとおりです。

  • ManagedExecutorService (MES) - 発行されたタスクを非同期的に実行するためにアプリケーションによって使用されます。タスクは、コンテナによって開始および管理されるスレッドで実行されます。コンテナのコンテキストは、タスクを実行するスレッドに伝播されます。

  • ManagedScheduledExecutorService (MSES) - 発行されたタスクを特定の時点で非同期的に実行するためにアプリケーションによって使用されます。タスクは、コンテナによって開始および管理されるスレッドで実行されます。コンテナのコンテキストは、タスクを実行するスレッドに伝播されます。

  • ManagedThreadFactory (MTF) - 管理対象スレッドを作成するためにアプリケーションによって使用されます。スレッドは、コンテナによって開始および管理されます。コンテナのコンテキストは、タスクを実行するスレッドに伝播されます。

  • ContextService - コンテナのコンテキストを取得する動的プロキシ・オブジェクトを作成して、アプリケーションがそのコンテキスト内で後で実行されるようにするか、管理対象エグゼキュータ・サービスに発行されるようにするために使用されます。コンテナのコンテキストは、タスクを実行するスレッドに伝播されます。

詳細は、Java EE 7チュートリアルJava EEの同時実行性ユーティリティに関する項を参照してください。「Java Specification Request 236: Concurrency Utilities for Java EE 1.0」(http://jcp.org/en/jsr/detail?id=236)も参照してください。

CMOによるパーティション・レベルの非同期タスク管理

WebLogic Serverでは、非同期タスク管理は表20-1にまとめられている4つのタイプのCMOで提供されます。

表20-1 非同期タスク管理を行うCMO

管理対象オブジェクト コンテキストの伝播 自己チューニング 停止時のスレッド中断 同時長時間実行新規スレッドの制限

管理対象エグゼキュータ・サービス(MES)

コンテキストは構成に基づいて伝播されます。

短時間実行タスクのみが、指定されたワーク・マネージャによって単一の自己チューニング・スレッド・プールにディスパッチされます。

ワーク・マネージャの停止中に、すべての未完了タスクが取り消されます。

過剰な数のスレッドによってサーバーが悪影響を受けないように、MESやMSESによって作成される長時間実行スレッドの最大数を構成できます。

管理対象スケジュール済エグゼキュータ・サービス(MSES)

コンテキストは構成に基づいて伝播されます。

MESと同じ動作。

MESと同じ動作。

MESと同じ動作。

コンテキスト・サービス

コンテキストは構成に基づいて伝播されます。

なし

なし

なし

管理対象スレッド・ファクトリ(MTF)

コンテキストは構成に基づいて伝播されます。

newThread()メソッドによって戻されるスレッドは、単一の自己チューニング・スレッド・プールからのスレッドではなく、タスクの完了時にこのスレッド・プールに入れられることはありません。

newThread()メソッドによって作成されたスレッドは、MTFの停止時に中断されます。

過剰な数のスレッドによってサーバーが悪影響を受けないように、MTFによって作成される新規スレッドの最大数を構成できます。


WebLogic Serverには3つのタイプのJSR236 CMOがあり、各CMOは、そのスコープ、およびその定義方法や使用方法で特徴付けられます。

  • デフォルトJava EE CMO - デフォルト・リソースがアプリケーションで使用できるようになるJava EE標準で必要とされ、それらのデフォルト・リソースに固有のJNDI名が定義されます。

  • 構成ファイル内のカスタマイズ済CMO - アプリケーションおよびモジュール・レベルで定義するか、JNDIにバインドされたアプリケーション・コンポーネント環境(ENC)から参照できます。

  • グローバルCMOテンプレート - WLS管理コンソールおよび構成MBeanを使用して、ドメイン、サーバーおよびパーティション・レベルの構成でテンプレートとしてグローバルに定義できます。


注意:

このドキュメントでは、グローバルCMOテンプレートがドメイン・パーティションに適用されるため、このテンプレートについてのみ説明しています。構成ファイル内のデフォルトJava EE CMOおよびカスタマイズ済CMOに関する概要の詳細は、『Oracle WebLogic Serverサーバー環境の管理』の同時管理対象オブジェクトの構成に関する項を参照してください。

ワーク・マネージャと同様に、グローバルCMOテンプレートは、WLS管理コンソールまたは構成MBeanを使用して、ドメイン、サーバーおよびパーティション・レベルで定義できます。パーティション・レベルでのCMOの構成の詳細は、「パーティションCMOテンプレートの構成: 主な手順」を参照してください。

パーティション・レベルのMESテンプレート構成要素

この項では、パーティション・レベルのMESテンプレートの構成要素を定義します。

表20-2 管理対象エグゼキュータ・サービスの構成要素

名前 説明 必須 デフォルト値 範囲

name

MESの名前。

  • 名前はDefaultManagedExecutorServiceにしないでください。そうしないと、サーバーを正常に起動できません。

  • 同じ名前のパーティション・レベルのMESは同じパーティション内に構成できません。そうしないと、サーバーを正常に起動できません。

  • ManagedExecutorServiceは、任意のパーティション内の無関係なその他のタイプの管理対象オブジェクト(ContextServiceなど)と同じ名前にすることができます。

  • パーティション・レベルのMESとJSR236 MESは、無関係に同じ名前を指定できます。

  • 同じ名前のパーティション・レベルMESが、<resource-group-template>およびあるパーティションの<resource-group>の両方で定義されている場合、<resource-group>定義は、そのパーティションの<resource-group-template>定義をオーバーライドします。

はい

なし

任意の空でない文字列。

dispatch-policy

ワーク・マネージャの名前。パーティション・レベルのワーク・マネージャは、この名前で選択されます。ワーク・マネージャが存在しない場合、パーティション・レベルのデフォルトのワーク・マネージャが使用されます。

いいえ

デフォルトのワーク・マネージャ

なし

max-concurrent-long-running-requests

同時長時間実行タスクの最大数。

いいえ

10

[0-65534].

範囲外の場合、デフォルト値が使用されます。

long-running-priority

長時間実行デーモン・スレッドの優先度を指定する整数。指定すると、すべての長時間実行スレッドが影響を受けます。

いいえ

Thread.NORM_PRIORITY

1-10

Thread.MIN_PRIORITYThread.MAX_PRIORITYとの間の範囲。範囲外の場合、デフォルト値が使用されます。


パーティション・レベルのMSESテンプレート構成要素

この項では、パーティション・レベルのMESテンプレートに類似した、パーティション・レベルのMSESテンプレートの構成要素を定義します。

表20-3 管理対象スケジュール済エグゼキュータ・サービスの構成要素

名前 説明 必須 デフォルト値 範囲

name

MSESの名前。

命名規則については、表20-2を参照してください。

はい

なし

任意の空でない文字列。

dispatch-policy

ワーク・マネージャの名前。

ワーク・マネージャの使用方法の規則については、表20-2を参照してください。

いいえ

デフォルトのワーク・マネージャ

なし

max-concurrent-long-running-requests

同時長時間実行タスクの最大数。

いいえ

10

[0-65534].

範囲外の場合、デフォルト値が使用されます。

long-running-priority

長時間実行デーモン・スレッドの優先度を指定する整数。指定すると、すべての長時間実行スレッドが影響を受けます。

いいえ

5
Thread.NORM_PRIORITY

1-1

Thread.MIN_PRIORITYThread.MAX_PRIORITYとの間の範囲。範囲外の場合、デフォルト値が使用されます。


パーティション・レベルのMTFテンプレート構成要素

この項では、パーティション・レベルのMTFテンプレートの構成要素を定義します。

表20-4 管理対象スレッド・ファクトリの構成要素

名前 説明 必須 デフォルト値 範囲

name

MTFの名前。

命名規則については、表20-2を参照してください。

はい

なし

任意の空でない文字列。

priority

スレッドに割り当てる優先度。(数が大きいほど、高い優先度を示します。)

いいえ

5
Thread.NORM_PRIORITY

1-10
Thread.MIN_PRIORITYThread.MAX_PRIORITYとの間の範囲。範囲外の場合、デフォルト値が使用されます。

max-concurrent-new-threads

MTFによって作成され、タスクのrun()メソッドを引き続き実行するスレッドの最大数。

いいえ

10

[0-65534]

範囲外の場合、デフォルト値が使用されます。


この項では、パーティション・レベルMTFの構成要素を定義します。

表20-5 管理対象スレッド・ファクトリの構成要素

名前 説明 必須 デフォルト値 範囲

name

MTFの名前。

命名規則については、表20-2を参照してください。

はい

なし

任意の空でない文字列。

priority

スレッドに割り当てる優先度。(数が大きいほど、高い優先度を示します。)

いいえ

5
Thread.NORM_PRIORITY

1-10
Thread.MIN_PRIORITYThread.MAX_PRIORITYとの間の範囲。範囲外の場合、デフォルト値が使用されます。

max-concurrent-new-threads

MTFによって作成され、タスクのrun()メソッドを引き続き実行するスレッドの最大数。

いいえ

10

[0-65534]

範囲外の場合、デフォルト値が使用されます。


長時間実行スレッドのパーティション・レベルCMO制約

MESおよびMSESに発行された長時間実行タスクと、MTFのnewThread()メソッドの呼出しでは、自己チューニング・スレッド・プールの一部として管理されない新しいスレッドを作成する必要があります。実行中のスレッドの数が過大になると、サーバーのパフォーマンスと安定性に悪影響を与える可能性があるため、同時実行性ユーティリティAPIによって作成される実行中のスレッドの最大数を指定する構成が用意されています。

最大同時長時間実行リクエストの制限の設定

MESおよびMSESに発行される同時長時間実行リクエストの制限は、パーティションで指定できます。すべての構成レベルは独立しており、最大同時長時間実行リクエストはそれらのいずれも超えることはできません。

表20-6は、デプロイメント・ディスクリプタで定義できるmax-concurrent-long-running-requests要素を含む同時長時間実行リクエストの制限をまとめたものです。

表20-6 パーティションでの同時長時間実行リクエストの制限

スコープ デプロイメント・ディスクリプタ 説明 <max-concurrent-long-running-requests>要素の詳細

パーティション

config.xml内:

一般的なパーティションでは、<domain><partition>のサブ要素として。グローバル・ランタイムでは、<domain>のサブ要素として。

そのサーバーのそのパーティションに指定された同時長時間実行リクエストの制限。

オプション

範囲: [0-65534]。範囲外の場合、デフォルト値が使用されます

デフォルト値: 50


指定された制限を超えた場合、MESまたはMSESは、発行された新しい長時間実行タスクに対して次のアクションを実行します。

  • タスク発行APIを呼び出すときにjava.util.concurrent.RejectedExecutionExceptionがスローされます。

  • ユーザーがManagedTaskListenerを使用してタスクを登録している場合、発行メソッドが失敗しているためこのリスナーには通知されません。

前述の規則は、invokeAll()メソッドとinvokeAny()メソッドには適用されないことに注意してください。これらのメソッドによって発行されたすべてのタスクは、指定済の制限によって拒否され、次のイベントが発生します。

  • ユーザーが登録したManagedTaskListenerのtaskSubmitted()メソッドが呼び出されます。

  • ユーザーが登録したManagedTaskListenerのtaskDone()メソッドが呼び出され、throwableParamjavax.enterprise.concurrent.AbortedExceptionになります。

  • その他の発行済タスクは影響を受けません。

  • メソッドは、RejectedExecutionExceptionをスローしません

例20-1に、config.xml内のmax-concurrent-long-running-requests要素に指定された値が長時間実行リクエストの最大数にどのように影響する可能性があるかを示します。

例20-1 config.xml内のmax-concurrent-long-running-requestsの配置例

<domain>
    <server>
        <name>myserver</server>
        <max-concurrent-long-running-requests>50</max-concurrent-long-running-requests> (place 1)
    </server>
    <max-concurrent-long-running-requests>10</max-concurrent-long-running-requests> (place 2)
    <partition>
        <name>mypartition</name>
    <max-concurrent-long-running-requests>5</max-concurrent-long-running-requests> (place 3)

    </partition>
    <server-template>
        <name>mytemplate</name>
        <max-concurrent-long-running-requests>50</max-concurrent-long-running-requests> (place 4)
    </server-template>
</domain>
  • place 1 - サーバー・インスタンスmyserverで定義されているMESとMSESに影響します。そのサーバー・インスタンスで実行されているすべてのMESとMSESは、長時間実行リクエストを合計で最大50だけ作成できます。

  • place 2 - ドメインで定義されているMESとMSESにのみ影響します。パーティション・レベルのMESとMSESには影響しません。ドメインで実行中のすべてのMESとMSESは、合計で最大10個のlong-running-requestsを作成できます。

  • place 3 - mypartitionで定義されているMESとMSESにのみ影響します。パーティションmypartitionで実行されているすべてのMESとMSESは、合計で最大5つの長時間実行リクエストを作成できます。

  • place 4 - テンプレートmytemplateに適用されるサーバー・インスタンスで定義されているMESとMSESに影響します。そのサーバー・インスタンスで実行されているすべてのMESとMSESは、長時間実行リクエストを合計で最大50だけ作成できます。

例20-2に、config.xml内のmax-concurrent-long-running-requests要素に指定された値が長時間実行リクエストの最大数にどのように影響する可能性があるかを示します。

例20-2 max-concurrent-long-running-requestsの構成のサンプル

server1(100)
    |---partition1(50)
         |---application1
              |---managed-scheduled-executor-service1(not specified)
              |---module1
                   |---managed-executor-service1(20)
                   |---managed-scheduled-executor-service2(not specified)
        |---application2
    |---partition2(70)

次の場合は、いずれの制限も超過しておらず、前述のアクションは実行されません。

  • 120の長時間実行タスクがmanaged-executor-service1に発行され、それらのうち115は完了し、5つが実行中であると仮定すると、1つの長時間実行タスクがmanaged-executor-service1に追加で発行された場合、制限は超えていないため実行されます。

次の場合は、1つの制限が超過しているため、前述のアクションが実行されます。

  • 10の長時間実行タスクがmanaged-scheduled-executor-service1によって実行されていると仮定すると、1つの長時間実行タスクがmanaged-scheduled-executor-service1に追加で発行された場合、managed-scheduled-executor-service1の制限を超過します。

  • 10の長時間実行タスクがapplication1によって実行され、40がapplication2によって実行されていると仮定すると、1つの長時間実行タスクがapplication1またはapplication2に追加で発行された場合、partition1の制限を超過します。

  • 10の長時間実行タスクがapplication1によって実行され、30がapplication2によって実行され、60がpartition2によって実行されていると仮定すると、1つの長時間実行タスクがapplication1application2またはpartition2に追加で発行された場合、server1の制限が超過します。

最大同時新規スレッドの制限の設定

MTFのnewThread()メソッドを呼び出して作成された同時新規実行スレッドの制限は、管理対象オブジェクト、ドメインおよびサーバー・レベルで指定できます。すべての構成レベルは独立しており、最大同時新規実行スレッドはそれらのいずれも超えることはできません。

実行スレッドとは、MTFによって作成され、そのrun()メソッドがまだ完了していないスレッドであることに注意してください。

表20-7は、デプロイメント・ディスクリプタで定義できる要素<max-concurrent-new-threads>を含む同時新規実行スレッドの制限をまとめたものです。

表20-7 同時新規実行スレッドの制限

スコープ デプロイメント・ディスクリプタ 説明 <max-concurrent-long-running-requests>要素の詳細

パーティション

config.xml内:

一般的なパーティションでは、<domain><partition>のサブ要素として。グローバル・ランタイムでは、<domain>のサブ要素として。

そのサーバーのそのパーティションに指定された同時新規実行スレッドの制限。

オプション

範囲は[0-65534]で、範囲外の場合はデフォルト値が使用されます

デフォルト値: 50


指定された制限を超えた場合、MTFのnewThread()メソッドへの呼出しでは、ThreadFactory.newThread Javadocに一致するようにnullを返します。

max-concurrent-new-threadsを使用するサンプル・スニペットを表示するには、「max-concurrent-long-running-requestsの構成のサンプル」を参照してください。

パーティションCMOテンプレートの構成: 主な手順

WLS管理コンソールおよび構成MBeanを使用して、パーティションの構成でグローバルCMOをテンプレートとして定義できます。CMOテンプレートは、パーティション内の任意のアプリケーションまたはアプリケーション・コンポーネントに割り当てることができます。

パーティション内で次の3つのタイプのCMOテンプレートを定義できます。

  • 管理対象エグゼキュータ・サービス・テンプレート

  • 管理対象スケジュール済エグゼキュータ・サービス・テンプレート

  • 管理対象スレッド・ファクトリ・テンプレート

たとえば、managed-executor-service-templateを定義している場合、パーティションにデプロイされた各アプリケーションに対して一意のMESインスタンスが作成されます。

WLS管理コンソールを使用したパーティション・スコープCMOテンプレートの構成

CMOテンプレートは、WLS管理コンソールを使用して、構成し、パーティションを対象とすることができます。

  1. 「ドメイン構造」ツリーで、「環境」を展開し、「同時テンプレート」をクリックします。

  2. 「新規」をクリックし、次のいずれかのテンプレート・オプションを選択します。

    • 管理対象エグゼキュータ・サービス・テンプレート

    • 管理対象スケジュール済エグゼキュータ・サービス・テンプレート

    • 管理対象スレッド・ファクトリ・テンプレート

  3. 新規テンプレートの作成ページで、必要に応じてテンプレートのプロパティを入力します。プロパティは、作成する同時テンプレートのタイプによって異なります。

  4. 「次」をクリックします。

  5. 同時テンプレートのターゲットとするパーティションを選択します。

    選択したパーティションにデプロイされたアプリケーションのみがこの同時テンプレートを使用できます。

  6. 「終了」をクリックします。「同時テンプレートのサマリー」ページが表示され、新しいパーティション・スコープの同時テンプレートがリストされます。

  7. 必要に応じてその他の同時テンプレートを作成するには、これらの手順を繰り返します。

ドメインおよびサーバー・スコープのCMOテンプレートの構成の詳細は、『Oracle WebLogic Serverサーバー環境の管理』のグローバルCMOテンプレートに関する項を参照してください。

MBeanでのCMOテンプレートの構成

CMOテンプレートは、PartitionMBeanで次の構成MBeanを使用して構成できます。

詳細は、Oracle WebLogic Server MBeanリファレンスPartitionMBeanに関する項を参照してください。

パーティションの同時制約の構成: 主な手順

制約は、WLS管理コンソールおよび構成MBeanを使用して、パーティション・スコープに対して定義することもできます。

WLS管理コンソールを使用したパーティションの同時制約の構成

同時制約は、WLS管理コンソールを使用してパーティションごとに構成できます。

  1. 「ドメイン構造」ツリーで、「ドメイン・パーティション」をクリックします。

  2. 「ドメイン・パーティションのサマリー」表で、構成するパーティションを選択します。

  3. partition-nameの設定」ページで、パーティションの「構成」→「同時実行性」ページを開きます

  4. 次の同時制約オプションのいずれかまたはすべての値を指定します。

    • 最大同時長時間実行リクエスト - パーティション・スコープですべての管理対象エグゼキュータ・サービスまたは管理対象スケジュール済エグゼキュータ・サービスに発行できる同時長時間実行リクエストの最大数。

      「最大同時長時間実行リクエストの制限の設定」を参照してください。

    • 最大同時新規スレッド - パーティション・スコープですべての管理対象スレッド・ファクトリによって作成可能な同時新規スレッドの最大数。

      「最大同時新規スレッドの制限の設定」を参照してください。

  5. 「保存」をクリックします。

MBeanでの同時制約の構成

同時制約は、PartitionMBeanで次のメソッドを使用して、パーティションごとに構成できます。

  • maxConcurrentLongRunningRequests() - パーティション・スコープですべての管理対象エグゼキュータ・サービスまたは管理対象スケジュール済エグゼキュータ・サービスに発行できる同時長時間実行リクエストの最大数。

    「最大同時長時間実行リクエストの制限の設定」を参照してください。

  • maxConcurrentNewThreads() - パーティション・スコープですべての管理対象スレッド・ファクトリによって作成可能な同時新規スレッドの最大数。

    「最大同時新規スレッドの制限の設定」を参照してください。

WebLogic Server MBeanの使用の詳細は、『Oracle WebLogic Server JMXによるカスタム管理ユーティリティの開発』のJMXを使用したWebLogic Server MBeanへのアクセスに関する項を参照してください。

パーティション同時管理対象オブジェクトの構成: 関連タスクおよびリンク

詳細については、以下の各節を参照してください。