19 パーティション同時管理対象オブジェクトの構成
注意:
WebLogic Server Multitenantドメイン・パーティション、リソース・グループ、リソース・グループ・テンプレート、仮想ターゲットおよびリソース消費管理は、WebLogic Server 12.2.1.4.0で非推奨になり、次のリリースで削除されます。この章の内容は次のとおりです。
パーティション同時管理対象テンプレートの構成: 概要
ドメインおよびサーバー・レベルの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では、非同期タスク管理は表19-1にまとめられている4つのタイプのCMOで提供されます。
表19-1 非同期タスク管理を提供するCMO
管理対象オブジェクト | コンテキストの伝播 | 自動チューニング | 停止時のスレッド中断 | 同時長時間実行新規スレッドの制限 |
---|---|---|---|---|
管理対象エグゼキュータ・サービス(MES) |
コンテキストは構成に基づいて伝播されます。 |
短時間実行タスクのみが、指定されたワーク・マネージャによって単一の自己チューニング・スレッド・プールにディスパッチされます。 |
ワーク・マネージャの停止中に、すべての未完了タスクが取り消されます。 |
過剰な数のスレッドによってサーバーが悪影響を受けないように、MESやMSESによって作成される長時間実行スレッドの最大数を構成できます。 |
管理対象スケジュール済エグゼキュータ・サービス(MSES) |
コンテキストは構成に基づいて伝播されます。 |
MESと同じ動作。 |
MESと同じ動作。 |
MESと同じ動作。 |
コンテキスト・サービス |
コンテキストは構成に基づいて伝播されます。 |
該当せず |
該当せず |
該当せず |
管理対象スレッド・ファクトリ(MTF) |
コンテキストは構成に基づいて伝播されます。 |
|
|
過剰な数のスレッドによってサーバーが悪影響を受けないように、MTFによって作成される新規スレッドの最大数を構成できます。 |
WebLogic Serverには3つのタイプのJSR236 CMOがあり、各CMOは、そのスコープ、およびその定義方法や使用方法で特徴付けられます。
-
デフォルトJava EE CMO: アプリケーションがデフォルト・リソースを利用できるようにするためにJava EE標準で必要となり、これらのデフォルト・リソースに固有のJNDI名を定義します。
-
構成ファイル内のカスタマイズ済CMO: アプリケーションおよびモジュール・レベルで定義するか、JNDIにバインドされたアプリケーション・コンポーネント環境から参照できます。
-
グローバルCMOテンプレート: WebLogic Server管理コンソールおよび構成MBeanを使用して、ドメイン、サーバーおよびパーティション・レベルの構成でテンプレートとしてグローバルに定義できます。
注意:
このドキュメントでは、グローバルCMOテンプレートがドメイン・パーティションに適用されるため、このテンプレートについてのみ説明します。構成ファイル内のデフォルトJava EE CMOおよびカスタマイズ済CMOに関する概念の詳細は、『Oracle WebLogic Serverサーバー環境の管理』の「同時管理対象オブジェクトの構成」を参照してください。
ワーク・マネージャと同様に、グローバルCMOテンプレートは、WebLogic Server管理コンソールまたは構成MBeanを使用して、ドメイン、サーバーおよびパーティション・レベルで定義できます。パーティション・レベルでのCMOの構成の詳細は、「パーティションCMOテンプレートの構成: 主なステップ」を参照してください。
パーティション・レベルのMESテンプレート構成要素
表19-2に、パーティション・レベルのMESテンプレートの構成要素を定義します。
表19-2 管理対象エグゼキュータ・サービスの構成要素
名前 | 説明 | 必須 | デフォルト値 | 範囲 |
---|---|---|---|---|
name |
MESの名前。
|
はい |
該当せず |
任意の空でない文字列。 |
dispatch-policy |
ワーク・マネージャの名前。パーティション・レベルのワーク・マネージャは、この名前で選択されます。ワーク・マネージャが存在しない場合、パーティション・レベルのデフォルトのワーク・マネージャが使用されます。 |
いいえ |
デフォルトのワーク・マネージャ |
該当せず |
max-concurrent-long-running-requests |
同時長時間実行タスクの最大数。 |
いいえ |
10 |
[0-65534]. 範囲外の場合、デフォルト値が使用されます。 |
long-running-priority |
長時間実行デーモン・スレッドの優先度を指定する整数。指定すると、すべての長時間実行スレッドが影響を受けます。 |
いいえ |
|
1-10
|
パーティション・レベルのMSESテンプレート構成要素
表19-3に、パーティション・レベルのMESテンプレートに類似した、パーティション・レベルのMSESテンプレートの構成要素を定義します。
表19-3 管理対象スケジュール済エグゼキュータ・サービスの構成要素
名前 | 説明 | 必須 | デフォルト値 | 範囲 |
---|---|---|---|---|
name |
MSESの名前。 ネーミング規則については、表19-2を参照してください。 |
はい |
該当せず |
任意の空でない文字列。 |
dispatch-policy |
ワーク・マネージャの名前。 ワーク・マネージャの使用方法の規則については、表19-2を参照してください。 |
いいえ |
デフォルトのワーク・マネージャ |
該当せず |
max-concurrent-long-running-requests |
同時長時間実行タスクの最大数。 |
いいえ |
10 |
[0-65534]. 範囲外の場合、デフォルト値が使用されます。 |
long-running-priority |
長時間実行デーモン・スレッドの優先度を指定する整数。指定すると、すべての長時間実行スレッドが影響を受けます。 |
いいえ |
5 |
1-1
|
パーティション・レベルのMTFテンプレート構成要素
表19-4に、パーティション・レベルのMTFテンプレートの構成要素を定義します。
表19-4 管理対象スレッド・ファクトリの構成要素
名前 | 説明 | 必須 | デフォルト値 | 範囲 |
---|---|---|---|---|
name |
MTFの名前。 ネーミング規則については、表19-2を参照してください。 |
はい |
該当せず |
任意の空でない文字列。 |
priority |
スレッドに割り当てる優先度。(数が大きいほど、高い優先度を示します。) |
いいえ |
5 |
1-10 |
max-concurrent-new-threads |
MTFによって作成され、タスクの |
いいえ |
10 |
[0-65534] 範囲外の場合、デフォルト値が使用されます。 |
表19-5に、パーティション・レベルのMTFの構成要素を定義します。
表19-5 管理対象スレッド・ファクトリの構成要素
名前 | 説明 | 必須 | デフォルト値 | 範囲 |
---|---|---|---|---|
name |
MTFの名前。 ネーミング規則については、表19-2を参照してください。 |
はい |
該当せず |
任意の空でない文字列。 |
priority |
スレッドに割り当てる優先度。(数が大きいほど、高い優先度を示します。) |
いいえ |
5 |
1-10 |
max-concurrent-new-threads |
MTFによって作成され、タスクの |
いいえ |
10 |
[0-65534] 範囲外の場合、デフォルト値が使用されます。 |
長時間実行スレッドのパーティション・レベルCMO制約
MESおよびMSESに発行された長時間実行タスクと、MTFのnewThread()
メソッドの呼出しでは、自己チューニング・スレッド・プールの一部として管理されない新しいスレッドを作成する必要があります。実行中のスレッドの数が過大になると、サーバーのパフォーマンスと安定性に悪影響を与える可能性があるため、同時実行性ユーティリティAPIによって作成される実行中のスレッドの最大数を指定する構成が用意されています。
最大同時長時間実行リクエストの制限の設定
MESおよびMSESに発行される同時長時間実行リクエストの制限は、パーティションで指定できます。すべての構成レベルは独立しており、最大同時長時間実行リクエストはそれらのいずれも超えることはできません。
表19-6は、デプロイメント・ディスクリプタで定義できるmax-concurrent-long-running-requests
要素を含む同時長時間実行リクエストの制限をまとめたものです。
表19-6 パーティションでの同時長時間実行リクエストの制限
スコープ | デプロイメント・ディスクリプタ | 説明 | <max-concurrent-long-running-requests>要素の詳細 |
---|---|---|---|
パーティション |
一般的なパーティションでは、 |
そのサーバーのそのパーティションに指定された同時長時間実行リクエストの制限。 |
オプション 範囲: [0-65534]。範囲外の場合、デフォルト値が使用されます。 デフォルト値: 50 |
指定された制限を超えた場合、MESまたはMSESは、発行された新しい長時間実行タスクに対して次のアクションを実行します。
-
タスク発行APIを呼び出すときに
java.util.concurrent.RejectedExecutionException
がスローされます。 -
ユーザーが
ManagedTaskListener
を使用してタスクを登録している場合、発行メソッドが失敗しているためこのリスナーには通知されません。
前述の規則は、invokeAll()
メソッドとinvokeAny()
メソッドには適用されないことに注意してください。これらのメソッドによって発行されたいずれかのタスクが指定された制限によって拒否された場合、次のイベントが発生します。
-
ユーザーが登録した管理対象タスク・リスナーの
taskSubmitted()
メソッドが呼び出されます。 -
ユーザーが登録した管理対象タスク・リスナーの
taskDone()
メソッドが呼び出され、throwableParam
がjavax.enterprise.concurrent.AbortedException
になります。 -
その他の発行済タスクは影響を受けません。
-
メソッドは、例外
RejectedExecutionException
をスローしません。
次の例に、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件作成できます。 -
place 3
: mypartitionで定義されているMESとMSESにのみ影響します。パーティションmypartitionで実行されているすべてのMESとMSESは、長時間実行リクエストを合計で最大5件作成できます。 -
place 4
: テンプレートmytemplateに適用されるサーバー・インスタンスで定義されているMESとMSESに影響します。そのサーバー・インスタンスで実行されているすべてのMESとMSESは、長時間実行リクエストを合計で最大50件のみ作成できます。
次の例に、config.xml
ファイル内のmax-concurrent-long-running-requests
要素に指定された値が長時間実行リクエストの最大数にどのように影響する可能性があるかを示します。
次の場合は、いずれの制限も超過しておらず、前述のアクションは実行されません。
-
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つの長時間実行タスクがapplication1
、application2
またはpartition2
に追加で発行された場合、server1
の制限を超過します。
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)
最大同時新規スレッドの制限の設定
MTFのnewThread()
メソッドを呼び出して作成された同時新規実行スレッドの制限は、管理対象オブジェクト、ドメインおよびサーバー・レベルで指定できます。すべての構成レベルは独立しており、最大同時新規実行スレッドはそれらのいずれも超えることはできません。
実行スレッドとは、MTFによって作成され、そのrun()
メソッドがまだ完了していないスレッドであることに注意してください。
表19-7は、デプロイメント・ディスクリプタで定義できる要素<max-concurrent-new-threads>
を含む同時新規実行スレッドの制限をまとめたものです。
表19-7 同時新規実行スレッドの制限
スコープ | デプロイメント・ディスクリプタ | 説明 | <max-concurrent-long-running-requests>要素の詳細 |
---|---|---|---|
パーティション |
一般的なパーティションでは、 |
そのサーバーのそのパーティションに指定された同時新規実行スレッドの制限。 |
オプション 範囲: [0-65534]。範囲外の場合、デフォルト値が使用されます。 デフォルト値: 50 |
指定された制限を超えた場合、MTFのnewThread()
メソッドへの呼出しでは、ThreadFactory.newThread
Javadocに一致するようにnull
を返します。
max-concurrent-new-threads
の使用方法のサンプルは、例19-*を参照してください。
パーティションCMOテンプレートの構成: 主なステップ
WebLogic Server管理コンソールおよび構成MBeanを使用して、パーティションの構成でグローバルCMOをテンプレートとして定義できます。CMOテンプレートは、パーティション内の任意のアプリケーションまたはアプリケーション・コンポーネントに割り当てることができます。
注意:
マルチテナントのパーティション化されたドメインは、WebLogic Server Premium Editionでのみ使用できます。「WebLogic Server MTについて」を参照してください。
パーティション内で次の3つのタイプのCMOテンプレートを定義できます。
-
管理対象エグゼキュータ・サービス
-
管理対象スケジュール済エグゼキュータ・サービス
-
管理対象スレッド・ファクトリ
たとえば、managed-executor-service-template
を定義している場合、パーティションにデプロイされた各アプリケーションに対して一意のMESインスタンスが作成されます。
管理コンソールでのパーティション・スコープCMOテンプレートの構成
CMOテンプレートは、WebLogic Server管理コンソールを使用してパーティションに構成およびスコープ指定することができます。
ドメインおよびサーバー・スコープのCMOテンプレートの構成の詳細は、『Oracle WebLogic Serverサーバー環境の管理』のグローバルCMOテンプレートに関する項を参照してください。
MBeanでのCMOテンプレートの構成
CMOテンプレートは、PartitionMBean
で次の構成MBeanを使用して構成できます。
Oracle WebLogic Server MBeanリファレンスのPartitionMBeanに関する項を参照してください。
パーティションの同時制約の構成: 主なステップ
制約についても、WebLogic Server管理コンソールおよび構成MBeanを使用してパーティション・スコープに対して定義できます。
MBeanでの同時制約の構成
同時制約は、PartitionMBean
で次のメソッドを使用して、パーティションごとに構成できます。
-
maxConcurrentLongRunningRequests()
- パーティション・スコープですべての管理対象エグゼキュータ・サービスまたは管理対象スケジュール済エグゼキュータ・サービスに発行できる同時長時間実行リクエストの最大数。「最大同時長時間実行リクエストの制限の設定」を参照してください。
-
maxConcurrentNewThreads()
- パーティション・スコープですべての管理対象スレッド・ファクトリによって作成可能な同時新規スレッドの最大数。「最大同時新規スレッドの制限の設定」を参照してください。
WebLogic Server MBeanの使用の詳細は、Oracle WebLogic Server JMXによるカスタム管理ユーティリティの開発のJMXを使用したWebLogic Server MBeanへのアクセスに関する項を参照してください。
パーティション・レベルCMOテンプレートのモニタリング
同時制約は、直接問い合せるか、MBeanを介して問い合せるか、WebLogic Server管理コンソールを使用して問い合せることができます。
管理コンソールでのCMOテンプレートのモニタリング
CMOテンプレートは、管理コンソールを使用してモニターできます。
CMOで作成されたスレッドをパーティションでモニターするには、次のようにします。
-
「ドメイン構造」ツリーで、「ドメイン・パーティション」をクリックします。
-
「ドメイン・パーティションのサマリー」表で、モニターするパーティションを選択します。
-
「partition-nameの設定」ページで、「モニタリング」→「同時テンプレート」タブを選択します。
表では、パーティションにターゲット指定されているCMOテンプレートの構成情報を示します。
MBeanでのCMOテンプレートのモニタリング
パーティションのCMOテンプレートは、次のMBean属性からアクセスできるConcurrentManagedObjectsRuntimeMBean
を使用してモニターできます。
-
PartitionRuntimeMBean.ConcurrentManagedObjectsRuntime
- パーティションにターゲット指定されているCMOテンプレートの構成情報を示します。
『Oracle WebLogic Server MBeanリファレンス』のConcurrentManagedObjectsRuntimeMBeanに関する項を参照してください。
WebLogic Server MBeanの使用の詳細は、Oracle WebLogic Server JMXによるカスタム管理ユーティリティの開発のJMXを使用したWebLogic Server MBeanへのアクセスに関する項を参照してください。
パーティション同時管理対象オブジェクトの構成: 関連タスクおよびリンク
-
『Oracle WebLogic Serverサーバー環境の管理』の「同時管理対象オブジェクトの構成」。
-
CMO関連の構成およびランタイムMBeanの詳細は、『Oracle WebLogic Server MBeanリファレンス』のManagedExecutorServiceTemplateMBeanに関する項、ManagedScheduledExecutorServiceTemplateMBeanに関する項、ManagedThreadFactoryTemplateMBeanに関する項およびPartitionMBeanに関する項を参照してください。
-
WLSTコマンドの使用の詳細は、WebLogic Server WLSTコマンド・リファレンスのオンラインおよびオフラインのWebLogic Server WLSTコマンド・リファレンスに関する項を参照してください。
-
『Oracle WebLogic Serverの理解』の「サンプル・アプリケーションとコード例」。
-
「Java Specification Request 236: Concurrency Utilities for Java EE 1.0」(
http://jcp.org/en/jsr/detail?id=236
)