3.3. エビクションの使用

Red Hat JBoss Data Grid では、エビクションはデフォルトでは無効にされています。空の <eviction /> 要素を使用して、ストラテジーや最大エントリー数の設定なしにエビクションを有効にすると、次のデフォルト値が自動的に実装されます。
  • ストラテジー: 指定されたエビクションストラテジーがない場合、EvictionStrategy.NONE がデフォルトとみなされます。
  • max-entries/maxEntries: 指定された値がない場合、max-entries/maxEntries の値は無制限のエントリーを許可する -1 に設定されます。

3.3.1. エビクションの初期化

エビクションを初期化するには、エビクション要素の max-entries 属性の値をゼロよりも大きい数に設定します。max-entries に設定された値を調整して、使用する設定に最適な値を探します。max-entries に設定する値が大きすぎると、Red Hat JBoss Data Grid のメモリーが不足するため注意してください。
以下の手順は、JBoss Data Grid でエビクションを初期化するステップを簡単に説明しています。

手順3.1 エビクションの初期化

  1. エビクションタグの追加

    <eviction> タグを次のようにプロジェクトの <cache> タグに追加します。
    <eviction />
  2. エビクションストラテジーの設定

    使用するエビクションストラテジーを設定するために strategy の値を設定します。使用可能な値は、LRUUNORDERED および LIRS (またはエビクションが不要な場合は NONE) です。以下は、このステップのサンプルです。
    <eviction strategy="LRU" />
  3. 最大エントリー数の設定

    メモリー内で許可されるエントリーの最大数を設定します。無制限のエントリーを許可するためのデフォルト値は -1 です。
    1. ライブラリーモードで、maxEntries パラメーターを次のように設定します。
      <eviction strategy="LRU" maxEntries="200" />
    2. リモートクライアントモードで、max-entries を次のように設定します。
      <eviction strategy="LRU" max-entries="200" />
結果

エビクションがターゲットキャッシュ用に設定されます。

3.3.2. エビクションの設定例

設定 Bean または XML ファイルを使用して Red Hat JBoss Data Grid のエビクションを設定します。エビクションの設定はキャッシュごとに行います。
  • ライブラリーモードの XML 設定例は以下のようになります。
    <eviction strategy="LRU" maxEntries="2000"/>
  • リモートクライアントサーバーモードの XML 設定例は以下のようになります。
    <eviction strategy="LRU" max-entries="20"/>
  • ライブラリーモードのプログラムを用いた設定例は以下のようになります。
    Configuration c = new ConfigurationBuilder().eviction().strategy(EvictionStrategy.LRU)
                  .maxEntries(2000)
                  .build();

注記

エビクションの設定では、JBoss Data Grid のライブラリーモードは maxEntries パラメーター、リモートクライアントサーバーモードは max-entries パラメーターを使用します。

3.3.3. ランタイム時の最大エントリー値の変更

エビクションの最大エントリー値は、サーバーを再起動せずにクラスター化されたキャッシュに対して設定できます。この設定は、クラスター内の各ノードで実行されます。
エビクション設定の最大エントリー値を変更するには、以下のステップを実行します。
キャッシュ JMX エントリーで、setMaxEntries 操作を呼び出します。
  • setMaxEntries 操作を呼び出して、データコンテナー内のエントリーの最大数を設定します。
  • データコンテナーがエビクションをサポートしない場合、これを設定すると例外が生じます。
  • 値を 0 未満に設定すると、エラーがスローされます。

3.3.4. エビクション設定のトラブルシューティング

Red Hat JBoss Data Grid では、キャッシュのサイズを eviction 要素の max-entries パラメーターに指定された値よりも大きくすることができます。これは、max-entries の値を 2 の累乗以外の値に設定することは可能ですが、基礎となるアルゴリズムがこの値を V (max-entries よりも大きい直近の 2 の累乗値) に変更するからです。エビクションアルゴリズムは、キャッシュコンテナーのサイズが V の値を超えないようにします。

3.3.5. エビクションとパッシベーション

エントリーの 1 つのコピーがメモリーまたはキャッシュストアに維持されるようにするため、パッシベーションはエビクションと共に使用してください。
通常のキャッシュストアの代わりにパッシベーションを使用する主な理由は、パッシベーションを使用するとエントリーの更新に必要なリソースが少なくなることにあります。これは、パッシベーションではキャッシュストアへの更新が不要になるためです。