作業のスケジューリング
ワーク・マネージャを使用すると、定義したルールに基づいて作業に優先順位を付け、実際の実行時パフォーマンス統計をモニタリングしてアプリケーションのパフォーマンスを最適化できます。
ワーク・マネージャは、WebLogic Serverドメインにグローバルに適用できます。
ワーク・マネージャは、WebLogic Serverによって実行される作業を管理する一連のリクエスト・クラスおよびスレッド制約を定義します。
リクエスト・クラスは、アプリケーション要求の特定のクラスのフェア・シェア・スレッド資格、レスポンス時間の目標値、またはコンテキスト・ポリシーを定義します。
スレッド制約は、要求に割り当てるスレッドの最大数、デッドロックの解決に使用するスレッドの最小数、およびWebLogic Serverが要求を拒否するまでにキューに入れることができる要求または実行できる要求の総数を定義します。
「Oracle WebLogic Serverのサーバー環境の管理」の「ワーク・マネージャを使用したスケジュール済作業の最適化」を参照してください。
グローバル・ワーク・マネージャの作成
スレッド実行の優先順位付けに使用するグローバル・ワーク・マネージャを作成できます。
-
「編集ツリー」で、「スケジュール」、「ワーク・マネージャ」の順に移動します。
-
「新規」をクリックします。
-
新しいワーク・マネージャの名前を入力し、「作成」をクリックします。
-
必要に応じてデフォルト値を更新します。
-
「ターゲット」タブで、ワーク・マネージャを参照するアプリケーションをデプロイするサーバーまたはクラスタを選択し、「選択済」の下に移動します。 不要なサーバーまたはクラスタを「使用可能」の下に移動します。
-
「保存」をクリックします。
次に、少なくとも1つのリクエスト・クラスまたは制約を作成する必要があります。 グローバル・ワーク・マネージャは、作業をどのように優先度付けするかを判断するのにリクエスト・クラスおよび制約を使用します。 「リクエスト区分の作成」および「制約の作成」を参照してください。
リクエスト区分の作成
リクエスト・クラスは、要求へのスレッドの割当てに使用するスケジューリング・ガイドラインを表現します。
-
「編集ツリー」で、「スケジュール」に移動し、次のいずれかのリクエスト・クラス・タイプを選択します:
- コンテキスト・リクエスト・クラス
- フェア・シェア・リクエスト・クラス
- 「レスポンス時間リクエスト・クラス」様々なリクエスト・クラス・タイプの詳細は、「Oracle WebLogic Serverのサーバー環境の管理」の「リクエスト・クラス」を参照してください。
-
「新規」をクリックします。
-
新しいリクエスト・クラスの名前を入力し、レスポンス時間リクエスト・クラスの場合は「レスポンス時間目標」値を更新します。
-
「作成」をクリックします。
-
「ターゲット」タブで、このリクエスト・クラスを参照するアプリケーションをデプロイするサーバーまたはクラスタを選択し、「選択済」の下に移動します。
選択するサーバーまたはクラスタは、該当するワーク・マネージャと少なくとも1つのターゲットを共有する必要があります。
-
「保存」をクリックします。
次に、このリクエスト・クラスを使用するワーク・マネージャに割り当てる必要があります。 「ワーク・マネージャへのリクエスト・クラスまたは制約の割当て」を参照してください。
制約の作成
制約では、リクエストの実行に割り当てられるスレッドの最小数と最大数、およびWebLogic Serverがリクエストの拒否を開始する前にキューに入れたり実行したりできるリクエストの合計数を定義します。
-
「編集ツリー」で、「スケジュール」に移動し、次のいずれかの制約タイプを選択します:
- 容量
- 最大スレッド数制約
- 「最小スレッド数制約」様々なリクエスト・クラス・タイプの詳細は、「Oracle WebLogic Serverのサーバー環境の管理」の「制約」を参照してください。
-
「新規」をクリックします。
-
新しい制約の名前を入力し、「作成」をクリックします。
-
必要に応じて、制約のデフォルト値を更新します。 変更が完了したら、「保存」をクリックします。
-
「ターゲット」タブで、この制約を参照するアプリケーションをデプロイするサーバーまたはクラスタを選択し、「選択済」の下に移動します。
選択するサーバーまたはクラスタは、該当するワーク・マネージャと少なくとも1つのターゲットを共有する必要があります。
-
「保存」をクリックします。
-
必要に応じて、この手順を繰り返して別のタイプの制約を追加します。
各ワーク・マネージャには、各タイプの制約を1つのみ含めることができます。
次に、この制約を使用するには、ワーク・マネージャにこの制約を割り当てる必要があります。 「ワーク・マネージャへのリクエスト・クラスまたは制約の割当て」を参照してください。
ワーク・マネージャへのリクエスト・クラスまたは制約の割当て
リクエスト・クラスまたは制約に定義されている設定を使用するには、その設定をワーク・マネージャに割り当てる必要があります。
ノート
-
リクエスト・クラス: 各ワーク・マネージャには、一つリクエスト・クラスのみを含めることができますが、複数のワーク・マネージャ間でリクエスト・クラスを共有できます。
-
制約: 各ワーク・マネージャには、各typeの制約を1つのみ含めることができますが、複数のワーク・マネージャ間で制約を共有できます。
-
まだ作成していない場合は、グローバル・ワーク・マネージャを作成します。 「グローバル・ワーク・マネージャの作成」を参照してください。
-
「編集ツリー」で、「スケジュール」、「ワーク・マネージャ」の順に移動し、リクエスト・クラスまたは制約を割り当てるワーク・マネージャを選択します。
-
該当するドロップダウン・リストを使用して、このワーク・マネージャに割り当てるリクエスト・クラスまたは制約を選択します。
-
「保存」をクリックします。
ワーク・マネージャ停止トリガーの作成
ワーク・マネージャがスタック・スレッドを処理する方法を定義できます。
詳細は、「Oracle WebLogic Serverのサーバー環境の管理」の「スタック・スレッドの処理」を参照してください。
-
まだ作成していない場合は、グローバル・ワーク・マネージャを作成します。 「グローバル・ワーク・マネージャの作成」を参照してください。
-
「編集ツリー」で、「スケジュール」、「ワーク・マネージャ」、myWorkManager、「ワーク・マネージャ停止トリガー」の順に移動します。
-
「作成」をクリックします。
-
必要に応じてデフォルト値を更新します。
-
「保存」をクリックします。
同時管理対象オブジェクト・テンプレート
WebLogic Serverは、同時管理対象オブジェクト(CMO)テンプレートを使用してスレッドをコンテナ管理することにより、Jakarta EEアプリケーションに同時実行性機能を提供します。 CMOテンプレートを構成して、それをアプリケーション・コンポーネント(サーブレットやEJBなど)で使用できるように設定できます。
3つのタイプのCMOテンプレートを定義できます。
- 管理対象エグゼキュータ・サービス・テンプレート - 発行されたタスクを非同期的に実行するためにアプリケーションが使用します。 「グローバル管理対象エグゼキュータ・サービス・テンプレートの作成」を参照してください。
- 管理対象スケジュール済エグゼキュータ・サービス・テンプレート - 発行されたタスクを特定の時点で非同期的に実行するためにアプリケーションが使用します。 「グローバル管理対象スケジュール済エグゼキュータ・サービス・テンプレートの作成」を参照してください。
- 管理対象スレッド・ファクトリ・テンプレート - 管理対象スレッドを作成するためにアプリケーションが使用します。 「グローバル管理対象スレッド・ファクトリ・テンプレートの作成」を参照してください。
詳細は、「Oracle WebLogic Serverのサーバー環境の管理」の「同時管理対象オブジェクトの構成」を参照してください。
グローバル管理対象エグゼキュータ・サービス・テンプレートの作成
発行されたタスクを非同期的に実行するためにアプリケーションによって使用される管理対象エグゼキュータ・サービス(MES)テンプレートを作成できます。
-
「編集ツリー」で、「スケジュール」、「管理対象エグゼキュータ・サービス・テンプレート」の順に移動します。
-
「新規」をクリックします。
-
新しいMESテンプレートの名前を入力します。
-
「作成」をクリックします。
-
このMESテンプレートでデフォルト以外のワーク・マネージャを使用する場合は、「ディスパッチ・ポリシー」フィールドにカスタム・ワーク・マネージャの名前を入力します。
-
長時間実行デーモン・スレッドの優先度を指定する場合は、「長時間実行スレッドの優先度」フィールドの値を更新します。
-
ドメインでこのMESテンプレートに送信される同時長時間実行タスクの最大数を定義する場合は、「最大同時長時間実行リクエスト数」フィールドの値を更新します。
-
「保存」をクリックします。
-
「ターゲット」タブで、このMESテンプレートにアクセスできるサーバーまたはクラスタを選択し、「選択済」の下に移動します。 不要なサーバーまたはクラスタを「使用可能」の下に移動します。
このMESテンプレートを使用できるのは、選択したサーバーおよびクラスタにデプロイされたアプリケーションのみです。
-
「保存」をクリックします。
グローバル管理対象スケジュール済エグゼキュータ・サービス・テンプレートの作成
発行されたタスクを特定の時点で非同期的に実行するためにアプリケーションによって使用される管理対象スケジュール済エグゼキュータ・サービス(MSES)テンプレートを作成できます。
-
「編集ツリー」で、「スケジュール」、「管理対象スケジュール済エグゼキュータ・サービス・テンプレート」の順に移動します。
-
「新規」をクリックします。
-
新しいMSESテンプレートの名前を入力します。
-
「作成」をクリックします。
-
このMSESテンプレートでデフォルト以外のワーク・マネージャを使用する場合は、「ディスパッチ・ポリシー」フィールドにカスタム・ワーク・マネージャの名前を入力します。
-
長時間実行デーモン・スレッドの優先度を指定する場合は、「長時間実行スレッドの優先度」フィールドの値を更新します。
-
ドメインでこのMSESテンプレートに送信される同時長時間実行タスクの最大数を定義する場合は、「最大同時長時間実行リクエスト数」フィールドの値を更新します。
-
「保存」をクリックします。
-
「ターゲット」タブで、このMSESテンプレートにアクセスできるサーバーまたはクラスタを選択し、「選択済」の下に移動します。 不要なサーバーまたはクラスタを「使用可能」の下に移動します。
このMSESテンプレートを使用できるのは、選択したサーバーおよびクラスタにデプロイされているアプリケーションのみです。
-
「保存」をクリックします。
グローバル管理対象スレッド・ファクトリ・テンプレートの作成
管理対象スレッドを作成するためにアプリケーションによって使用される管理対象スレッド・ファクトリ(MTF)テンプレートを作成できます。
-
「編集ツリー」で、「スケジュール」、「管理対象スレッド・ファクトリ・テンプレート」の順に移動します。
-
「新規」をクリックします。
-
新しいMTFテンプレートの名前を入力します。
-
「作成」をクリックします。
-
スレッドに割り当てられる優先度を指定する場合は、「優先度」フィールドの値を更新します。 数字が大きいほど、優先度が高くなります。
-
MTFによって作成されるスレッドの最大数を定義し、タスクの
run()
メソッドを引き続き実行する場合は、「最大同時新規スレッド数」フィールドの値を更新します。 -
「保存」をクリックします。
-
「ターゲット」タブで、このMTFテンプレートにアクセスできるサーバーまたはクラスタを選択し、「選択済」の下に移動します。 不要なサーバーまたはクラスタを「使用可能」の下に移動します。
このMTFテンプレートを使用できるのは、選択したサーバーおよびクラスタにデプロイされているアプリケーションのみです。
-
「保存」をクリックします。