[Java, WLS] Concurrency Utilities support in WebLogic Server 12.2.1, Part Five: Multi-tenancy Support

原文はこちら。
https://blogs.oracle.com/WebLogicServer/entry/concurrency_utilities_support_in_weblogic5

Overview

WebLogic Server 12.2.1の主要機能の一つがMultitenancyのサポートで、これは単一のWebLogic Serverドメインに複数のパーティションを含めることができるというものです。この記事を読む前に、Part 1からPart 4までの記事をご覧ください。パーティションにデプロイされたアプリケーションは、Part 1からPart 4と同様、4種類の同時管理対象オブジェクト(concurrent managed object)を利用することができますし、また、グローバルの事前定義済み同時管理対象オブジェクト・テンプレート(concurrent managed object template)を使うこともできます。このテンプレートはアプリケーションをパーティションにデプロイした場合に、WebLogic Serverがこのアプリケーションのための同時管理対象オブジェクトをグローバル同時管理対象オブジェクト・テンプレートに基づいて作成します。思い出されるかもしれませんが、サーバ・スコープの最大同時長時間リクエスト(Max Concurrent Long Running Requests)と最大同時新規スレッド(Max Concurrent New Threads)があります。これらの設定はサーバ全体の長時間実行リクエスト、実行スレッドを制限するもので、これにはパーティションも含まれることにご注意ください。

Configuration

システム管理者はパーティション・スコープの同時管理対象オブジェクト・テンプレートを定義することができます。
Part 1(管理対象エグゼキュータ・サービス:ManagedExecutorService)やPart 3(管理対象スレッド・ファクトリ:ManagedThreadFactory)で述べたように、WebLogic Serverは同時実行タスクやスレッドの個数を制限する設定(最大同時長時間リクエストと最大同時新規スレッド)を以下のスコープに対して提供しています。
  • 管理対象エグゼキュータ・サービス(ManagedExecutorService)、管理対象スケジュール済エグゼキュータ・サービス(ManagedScheduledExecutorService)、管理対象スレッド・ファクトリ(ManagedThreadFactory)の各インスタンス
  • サーバのグローバル(ドメインレベル)ランタイム
  • サーバ
これらの中で、インスタンス・スコープとサーバ・スコープの制限はパーティションにも適用できます。その他に、システム管理者はパーティション・スコープの最大同時長時間リクエストと最大同時新規スレッドを定義することもできます。デフォルトの設定値は以下の通りです。
  • パーティション・スコープの最大同時長時間リクエスト:50
  • パーティション・スコープの最大同時新規スレッド:50
管理対象エグゼキュータ・サービス、管理対象スケジュール済エグゼキュータ・サービス、管理対象スレッド・ファクトリは、それぞれの3個の制限をいずれも超えない場合に限り、長時間実行タスクの発行、新規スレッドの作成を受け入れます。例えば、サーバのパーティションにデプロイされたアプリケーションがあり、長時間実行タスクがデフォルトの管理対象エグゼキュータ・サービスに対して発行されるとしましょう。以下の条件のいずれかに該当する場合、RejectedExecutionExceptionがスローされます。
  • この管理対象エグゼキュータ・サービスに対して発行されている10個の長時間実行タスクが進行中
  • このパーティション・スコープにある管理対象エグゼキュータ・サービスや管理対象スケジュール済エグゼキュータ・サービスに対して発行されている50個の長時間実行タスクが進行中
  • このサーバの管理対象エグゼキュータ・サービスや管理対象スケジュール済エグゼキュータ・サービスに対して発行されている100個の長時間実行タスクが進行中

Configure Partition Scope Concurrent Managed Object Templates

WebLogic Serverのシステム管理者はパーティションのために事前定義済みの同時管理対象オブジェクト・テンプレートを構成することができます。アプリケーションをパーティションにデプロイすると、WebLogic Serverは同時管理対象オブジェクト・インスタンスをパーティション・スコープの同時管理対象オブジェクト・テンプレートの設定に基づいて作成します。そしてこの作成された同時管理対象オブジェクト・インスタンスはすべてこのアプリケーションのスコープに入ります。

Example-1: Configure a Partition Scope ManagedThreadFactory template using WebLogic Administration Console

Step1)
WebLogic Server管理コンソールで[同時管理対象オブジェクト・テンプレートのサマリ]の[新規]ボタンをクリックすると、パーティション・スコープの管理対象スレッド・ファクトリ・テンプレートを作成することができます。[新規管理対象スレッド・ファクトリ・テンプレートの作成]ページが開くので、新たな管理対象スレッド・ファクトリ・テンプレートの名前やその他のパラメータを指定することができます。スコープをパーティションに選択してください。この例では、testMTFP1という管理対象スレッド・ファクトリ・テンプレートを partition1パーティションのために作成しています。


Step2)
パーティション・スコープの管理対象スレッド・ファクトリ・テンプレートを作成したら、当該パーティション上の任意のアプリケーションが自身のデフォルト管理対象スレッド・ファクトリ・インスタンスを取得し、利用することができます。
@WebServlet("/SomeServlet")
public class SomeServlet extends HttpServlet {

    @Resource(mappedName="testMTFP1")
    ManagedThreadFactory mtf;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Runnable aTask = new Runnable() {
            ...
        };
        Thread t = mtf.newThread(aTask);
        t.start();
        ...
    }
}

Configure Partition Scope Max Concurrent New Threads & Max Concurrent Long Running Requests

パーティションの最大同時新規スレッドは、サーバの当該パーティションにおけるすべての管理対象スレッド・ファクトリが作成するスレッドの制限です。パーティションの最大同時長時間リクエストは、サーバの当該パーティションで管理対象エグゼキュータ・サービスや管理対象スケジュール済エグゼキュータ・サービスに対して発行された同時長時間タスクの制限です。

パーティションの最大同時新規スレッドと最大同時長時間リクエストは、WebLogic Server管理コンソールの[(パーティション名)の設定]ページで編集することができます。この例では、partition1パーティションの最大同時新規スレッド、最大同時長時間リクエストをそれぞれ30と80に設定しています。


Related Articles:

詳細は、ドキュメントの以下の項をご覧下さい。
Oracle® Fusion Middleware Administering Server Environments for Oracle WebLogic Server 12c (12.2.1)
Configuring Concurrent Managed Objects
https://docs.oracle.com/middleware/1221/wls/CNFGD/concurrent-utils.htm#CNFGD359

0 件のコメント:

コメントを投稿