ワークマネージャーとスロットリング work-manager-and-throttling
AEM forms(および以前のバージョン)では、JMS キューを使用して非同期的に操作を実行していました。 AEM forms では、JMS キューが Work Manager に置き換えられました。 このドキュメントでは、ワークマネージャーの背景情報と、ワークマネージャーのスロットルオプションを設定する手順を説明します。
長期間有効な(非同期)操作について about-long-lived-asynchronous-operations
AEM forms では、サービスによって実行される操作は、短時間のみ有効(同期)と長時間有効(非同期)のどちらかになります。 短時間のみ有効な操作は、呼び出された同じスレッドで同期して完了します。 これらの操作は、応答を待ってから続行します。
長期間有効な操作は、複数の自動タスクと人的タスクを統合する大規模なソリューションの一部として、顧客がローン申し込みフォームを完成させ、送信する必要がある場合など、システムにまたがる場合や、組織を超える場合もあります。 このような操作は、応答を待つ間も続行する必要があります。 長期間有効な操作は、基になる作業を非同期的に実行し、完了を待つ間、他の方法でリソースをエンゲージすることを許可します。 短時間のみ有効な操作とは異なり、Work Manager では、呼び出し後に長期間有効な操作が完了したとは考慮されません。 同じサービス上で別の操作を要求するシステムや、フォームを送信するユーザーなどの外部トリガーが、操作の完了時に発生する必要があります。
ワークマネージャーについて about-work-manager
AEM forms(および以前のバージョン)では、JMS キューを使用して非同期的に操作を実行していました。 AEM forms では、Work Manager を使用して、管理されたスレッドを介して非同期操作をスケジュールおよび実行します。
非同期操作は次の方法で処理されます。
- ワークマネージャーは、実行する作業項目を受け取ります。
- ワークマネージャは、作業項目をデータベーステーブルに格納し、作業項目に一意の識別子を割り当てます。 データベースレコードには、作業項目の実行に必要なすべての情報が含まれています。
- Work Manager スレッドは、スレッドが空きになったときに作業項目を取り込みます。 作業項目をプルする前に、スレッドは、必要なサービスが開始されているか、次の作業項目をプルするのに十分なヒープサイズがあるか、作業項目を処理するのに十分な CPU サイクルがあるかを確認できます。 また、ワークマネージャーは、実行をスケジュールする際に、作業項目の属性(優先度など)を評価します。
AEM forms 管理者は、ヘルスモニターを使用して、キュー内の作業項目の数やステータスなど、Work Manager の統計を確認できます。 ヘルスモニターを使用して、作業項目を一時停止、再開、再試行、または削除することもできます。 ( ワークマネージャーに関連する統計を表示.)
ワークマネージャーのスロットルオプションの設定 configuring-work-manager-throttling-options
ワークマネージャーのスロットルを設定して、使用可能なメモリリソースが十分にある場合にのみ作業項目がスケジュールされるようにすることができます。 スロットルは、アプリケーションサーバーで次の JVM オプションを設定することで設定します。
adobe.work-manager.queue-refill-interval
ワークマネージャがキュー内の新しい項目を確認する際に使用する時間間隔をミリ秒単位で指定します。
このオプションの値は整数です。 デフォルト値は 1000
ミリ秒(1 秒)です。
非同期呼び出しの量が少ない場合は、この値を増やすことができます。 例えば、2000 ~ 5000(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
です。この値はほとんどのシステムで適切です。 システムを最大容量までプッシュする必要がある場合にのみ増やします。 ただし、この値を増やすと、メモリ不足の問題のリスクも高くなります。
クラスター環境でAEM forms を実行している場合は、クラスターのノードごとにメモリ制御の制限設定を異なる設定にする必要が生じる場合があります。 例えば、インタラクティブな作業用にロードバランサーでプログラムされたノード A と B に低い上限を設定できます。 また、ロードバランサーでは使用せず、非同期作業用に予約されたノード C と D に高い上限を設定することもできます。
adobe.workmanager.memory-control.low-limit
ワークマネージャが受信ジョブのスロットリングを停止する前に、使用可能なメモリの最大割合を指定します。
このオプションのデフォルト値は 20
です。この値はほとんどのシステムで適切です。
Dadobe.workmanager.allocate.max-batch-size
ワークマネージャーの最大バッチサイズを指定します。 デフォルトのバッチサイズは 10 です。
タスクが完了した後でもワークマネージャーのプロセスのステータスが更新されない場合は、バッチサイズを 1 に設定します。
JBoss への Java オプションの追加
- JBoss アプリケーションサーバーを停止します。
- [[appserver root]]/bin/run.bat(Windows)または run.sh(Linux または UNIX)をエディターで開き、
-Dproperty=value
の形式で必要に応じて Java オプションを追加します。 - サーバーを再起動します。
WebLogic への Java オプションの追加
-
次のように入力して、WebLogic 管理コンソールを起動します。
https://
[ホスト名]:
[ポート]/console
(Web ブラウザー)を使用して、 -
WebLogic Server ドメイン用に作成したユーザー名とパスワードを入力し、「Log Under Change Center」で「Lock & Edit」をクリックします。
-
「Domain Structure」で、 Environment / Servers をクリックし、右側のウィンドウで、管理対象サーバー名をクリックします。
-
次の画面で、「設定タブ」、「サーバー起動」タブをクリックします。
-
「引数」ボックスで、現在の内容の末尾に必要な引数を追加します。 例えば、ヘルスモニターを無効にするには、次を追加します。
-Dadobe.healthmonitor.enabled=false
はヘルスモニターを無効にします。 -
「保存」をクリックし、「変更をアクティベート」をクリックします。
-
WebLogic 管理対象サーバーを再起動します。
WebSphere への Java オプションの追加
- WebSphere Administrative Console のナビゲーションツリーで、 Servers / Server Types / WebSphere application servers をクリックします。
- 右側のウィンドウで、サーバー名をクリックします。
- 「Server Infrastructure」で、Java と forms のワークフロー/Process Definition をクリックします。
- 「その他のプロパティ」で「Java 仮想マシン」をクリックします。
- 「 Generic JVM arguments 」ボックスに、必要な引数を入力します。
- 「 OK 」または「 Apply 」をクリックし、「 Save directly to master configuration 」をクリックします。