ワークマネージャーとスロットリング

LiveCycle ES(および以前のバージョン)では、非同期に操作を実行するために JMS キューを使用していました。LiveCycle では、JMS キューはワークマネージャーに置き換えられました。ここでは、ワークマネージャーに関する背景について説明します。また、ワークマネージャーのスロットリングオプションを設定する場合の手順について説明します。

有効期間が長い(同期)操作について

LiveCycle では、サービスによって実行される操作には、有効期間が短い(同期)操作または有効期間が長い(非同期)操作があります。有効期間が短い操作は、呼び出された同じスレッドで同期して完了します。また、応答が完了してから続行します。

有効期間が長い操作は、複数のシステムにまたがったり、さらには組織を越えて展開したりします。例えば、複数の自動タスクおよび手動タスクを統合する大規模なソリューションの一部として、顧客がローン申し込みフォームに入力して送信する場合などです。このような操作は応答を待つ間続きます。有効期間が長い操作は、基礎となる作業を非同期に実行し、本来であれば完了まで待つ必要があったリソースの実行を可能にします。有効期間が短い操作とは異なり、有効期間が長い操作が呼び出されると、ワークマネージャーはその完了を考慮しません。システムが同じサービス上の別の操作を要求したり、ユーザーがフォームを送信したりするなど、別の外部のトリガーによって操作の完了が発生します。

ワークマネージャーについて

LiveCycle(および以前のバージョン)では、非同期に操作を実行するために JMS キューを使用していました。LiveCycle では、ワークマネージャーを使用して、非同期操作をスケジュールし、管理されたスレッドを介して操作を実行します。

非同期操作は次の方法で処理されます。

  1. ワークマネージャーで、実行予定の作業項目が受信されます。

  2. ワークマネージャーは作業項目をデータベースのテーブルに保存し、固有の識別子を作業項目に割り当てます。データベースレコードには、作業項目の実行に必要なすべての情報が含まれます。

  3. ワークマネージャースレッドは、スレッドが空いたときに作業項目を取得します。作業項目を取得する前に、必要なサービスが開始されているかどうか、次の作業項目を取得するために十分なヒープサイズがあるかどうか、作業項目を処理するために十分な CPU サイクルがあるかどうかがスレッドによってチェックされます。また、ワークマネージャーでは作業項目のスケジュール時に作業項目の属性(優先度など)も評価されます。

LiveCycle 管理者は、ヘルスモニターを使用してワークマネージャーの統計情報(キュー内の作業項目数やそのステータスなど)を調べることができます。また、ヘルスモニターは、作業項目の一時停止、再開、再試行または削除にも使用できます(ワークマネージャーに関連する統計情報の表示を参照)。

ワークマネージャーのスロットリングオプションの設定

ワークマネージャーのスロットリングは、使用できるメモリリソースが十分にある場合にのみ作業項目をスケジュールするように設定できます。スロットリングを設定するには、アプリケーションサーバーで次の JVM オプションを設定します。

プロパティ

説明

adobe.work-manager.queue-refill-interval

キュー内の新しい項目をチェックするときにワークマネージャーが使用する間隔(ミリ秒)を指定します。

このオプションの値は整数です。デフォルト値は 1000 ミリ秒(1 秒)です。

非同期の呼び出しの量が少ない場合、この値を増やすことができます。例えば、2,000~5,000(2~5 秒)の数値まで増やすことができます。

非同期呼び出しの量が多い場合はデフォルト値で十分ですが、必要に応じて低い値を使用することもできます。この値を減らしすぎると(例えば 50 未満にすると 1 秒に 20 回のポーリング頻度になります)、システムのオーバーヘッドが大幅に増加します。

adobe.workmanager.debug-mode-enabled

このオプションを true に設定するとデバッグモードが有効になり、false を設定すると無効になります。

デバッグモードでは、ワークマネージャーのポリシー違反およびワークマネージャーの一時停止/再開アクションに関するメッセージがログに記録されます。このオプションはトラブルシューティングの場合にのみ true に設定します。

adobe.workmanager.memory-control.enabled

このオプションを true に設定すると、後述するメモリ制御設定に基づいてスロットリングが有効になります。false に設定するとスロットリングが無効になります。

adobe.workmanager.memory-control.high-limit

ワークマネージャーが受信ジョブをスロットリング処理する前に、使用状態にすることができるメモリの最大比率を指定します。

このオプションのデフォルト値は 95 です。この値はほとんどのシステムに適しています。最大容量までシステムを実行する必要がある場合にのみ、値を増やしてください。ただし、この値を増やすときは、メモリ不足の問題が発生するリスクも増える点に注意してください。

クラスター環境で LiveCycle を実行している場合、クラスターのノードごとにメモリ制御の制限設定を変えることもできます。例えば、インタラクティブな作業用にロードバランサーでプログラミングしたノード A と B に対して低い上限を設定し、ロードバランサーからは使用せず、非同期作業に予約されているノード C と D には高い上限を設定することができます。

adobe.workmanager.memory-control.low-limit

ワークマネージャーが受信ジョブのスロットリングを停止する前に、使用状態にすることができるメモリの最大比率を指定します。

このオプションのデフォルト値は 20 です。この値はほとんどのシステムに適しています。

JBoss への Java オプションの追加

  1. JBoss アプリケーションサーバーを停止します。

  2. [appserver root]/bin/run.bat(Windows)または run.sh(Linux または UNIX)をエディターで開き、-Dproperty=value の形式で必要に応じて Java オプションを追加します。

  3. サーバーを再起動します。

WebLogic への Java オプションの追加

  1. Web ブラウザーの URL 行に http://[host name]:[port]/console と入力して、WebLogic 管理コンソールを起動します。

  2. WebLogic Server ドメインに対して作成したユーザー名とパスワードを入力し、「Log In」をクリックします。「Change Center」で、「Lock & Edit」をクリックします。

  3. 「Domain Structure」で、Environment/Servers をクリックし、右側のウィンドウで、管理対象サーバー名をクリックします。

  4. 次の画面で、「Configuration」タブ/「Server Start」タブをクリックします。

  5. 「Arguments」ボックスで、現在の内容の末尾に必要な引数を付加します。例えば、ヘルスモニターを無効にするには、

    -Dadobe.healthmonitor.enabled=false を追加して、ヘルスモニターを無効にします。

  6. 「Save」をクリックし、「Activate Changes」をクリックします。

  7. WebLogic 管理対象サーバーを再起動します。

WebSphere への Java オプションの追加

  1. WebSphere Administrative Console のナビゲーションツリーで、Servers/Server Types/WebSphere application servers をクリックします。

  2. 右側のウィンドウで、サーバー名をクリックします。

  3. 「Server Infrastructure」で、Java and Process Management/Process Definition をクリックします。

  4. 「Additional Properties」で、「Java Virtual Machine」をクリックします。

  5. 「Generic JVM arguments」ボックスに、必要な引数を入力します。

  6. 「OK」または「Apply」をクリックし、「Save directly to the master configuration」をクリックします。