メモリ プールを使用するESAの構成

Document created by RSA Information Design and Development on Feb 15, 2017
Version 1Show Document
  • View in full screen mode
  

このトピックでは、管理者を対象として、メモリ プールを使用するESAを構成する方法を説明します。

 メモリ プールは、ESAのルールによって保持されるイベント用にカスタマイズした仮想メモリの実装です。これは、ルールの機能を飛躍的に拡張するのに役立ちます。長い期間を対象とするルールまたは非常に複雑なルールを作成する場合は、メモリをより効率的に処理するために、メモリ プールを使用できます。メモリ プールを使用すると、すべてのイベントをメモリ内に保持するのではなく、ディスクに書き込むことができます。複雑なルールが存在したり、ルールが長期のタイム フレームにわたる場合は、大量のイベントをメモリ内に保持しなければならないため、これが役立ちます。

メモリ プールは、非バッチ モードまたはバッチ モードで実行するように構成できます。

  • 非バッチ モード:非バッチ モードでは、イベントがメモリ プールに入ると、ディスクに書き込まれます。非バッチ モードを構成するには、[MapPoolBatchWriteSize]属性を1に設定します。非バッチ モードは、メモリ スパイクを発生することなく、各イベントが配置され、個々にフェッチされるため、より安定したソリューションを提供します。
  • バッチ モード:バッチ モードでは、イベントがバッチにグループ化され、ディスクに書き込まれます。バッチ モードを構成するには、バッチ サイズ属性[MapPoolBatchWriteSize]を1より大きい値に設定します。バッチ モードでは、ディスクにイベントを配置するためのディスク アクティビティが最適化されるため、パフォーマンスが向上します。

注:これらの設定を変更した場合は、ESAを再起動する必要があります。ESAを再起動すると、現在メモリ プールでイベントが保持されている場合は、再起動時にイベントが破棄されます。 

注意:この機能はメモリの管理に非常に役に立ちますが、ESAのイベント処理速度に影響する場合があります。 ルールや構成の設定に応じて、パフォーマンスが10~30%の影響を受ける可能性があります。

ワークフロー

次の図は、バッチ モードのメモリ プールを使用するデータ フローを示します。

  1. イベントはメモリ プールに追加され、イベントへの参照がメモリ プールに格納されます。
  2. イベントは、ディスクに送信するバッチ単位にまとめられます(非バッチ モードでは、このステップはスキップされます)。
  3. バッチが閾値に達すると、イベントがディスクに書き込まれます(非バッチ モードでは、閾値は必要ありません)。
  4. EPLがディスクに書き込まれたイベントを要求すると、そのイベントはキャッシュに送信され、EPLルールで使用されます。 

手順

ESAメモリ プールを構成するには、次のステップを完了します。 

  1. Administration]>[サービス]から、ESAサービスを選択し、>[表示]>[エクスプローラ]を選択します。 
  2. CEP]>[EsperPool]>[configuration]を選択します。
  3. 次のフィールドの値を入力します。
                                      
属性説明構成 
MapPoolPersistenceURIメモリ プール ファイルを格納する場所。

デフォルト値は/opt/rsa/esa/pool/esperPoolです。RSAでは、デフォルト値は変更しないことをお勧めします。

 別のパーティションを使用するようにこの設定を変更する場合、パーティションには、ESA用に割り当てられているメモリの少なくとも10倍以上の領域があることを確認します。

注意:メモリ プールを使用中にこのパスを変更した場合は、ESAの再起動が必要です。この状況が発生した場合、ESAでは格納されているイベントを破棄しません。そのため、手動でそれらをパージする必要があります。

MapPoolEnableメモリ プールを有効または無効にします。デフォルト値はfalseです。メモリ プールを有効にするには、この値をtrueに設定します。  メモリ プールを有効または無効に切り替えた場合は再起動が必要です。
MapPoolFlushIntervalSecs

イベントをディスクにフラッシュする時間間隔。 たとえば、Esperで15分以上保持されているイベントがディスクにフラッシュされます。

デフォルト値は15です。メモリに大量のイベントを保持するEPLがある場合は、値を小さくすると、ESAがより安定するようになります。 値を大きくすると(30分以上)、長期間必要とされる関連イベントのみがディスクにフラッシュされるようになります。 

注:Javaメモリ管理のデザイン上、EPLで保持していないイベントがディスクに送信されることがあります。 これが発生しないように、MapPoolFlushIntervalSecsの値を大きく設定することができます。

MapPoolBatchWriteSize

バッチ サイズ(およびバッチ モードを使用するかどうか)を指定します。イベントがバッチ単位にグループにまとめられ、ディスクにフラッシュされます。

非バッチ モードを使用するには、この値を1に設定します。 

バッチ モードを使用するには、この値を1より大きい値に設定します。

デフォルトのバッチ サイズは100,000イベントです。フラッシュ間隔の最後に、バッチの容量に達していない場合、バッチの有効期限は30秒で切れ、バッチのすべてのコンテンツはメモリ プール ファイルとしてディスクに書き込まれます。

バッチ サイズの値を小さくすると(たとえば、10,000イベント)、イベントがディスクからフェッチされるときにメモリが肥大化するリスクが生じないため、より安定します。ただし、バッチ サイズを大きくすると(100,000イベント)、イベントをディスクに書き込む際の入力/出力アクティビティが最小限に抑えられるため、パフォーマンスが向上します。 

MapPoolMinSizeメモリ プールの最小サイズ。この値は初期化に使用されます。このため、通常はこの値を編集する必要はありません。 デフォルト値は10,000イベントです。値を大きくすると、パフォーマンスが向上する場合があります。 値を小さくすると、システムがより安定するようになります。 
MapPoolPersistTypeこれは表示のみのパラメータで、使用されている最適化のタイプを表示します。  デフォルト値はRMSerializeです。 

注:この機能の有効性は、ご使用の環境によって異なります。一定期間にイベントの頻繁なアクセスを必要とするルールを作成する場合、この機能によって、パフォーマンスが低下するだけで、スケーラビリティは全く向上しないかごくわずかしか向上しない可能性があります。

注:プール ファイルに保持されているすべてのイベントがEPLによって参照されなくなったときに、メモリ プール ファイルが削除されます。 

結果

シンプルなEPLルールの場合、ESAでは通常、メモリが約8~9倍改善されます。

You are here
Table of Contents > ESAのその他の手順 > メモリ プールを使用するESAの構成

Attachments

    Outcomes