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 エビクションの初期化
エンビクションタグの追加
<eviction> タグを次のようにプロジェクトの <cache> タグに追加します。<eviction />
エビクションストラテジーの設定
使用するエビクションストラテジーを設定するためにstrategy
の値を設定します。使用可能な値は、LRU
、UNORDERED
およびLIRS
(またはエビクションが不要な場合はNONE
) です。以下は、このステップのサンプルです。<eviction strategy="LRU" />
最大エントリー数の設定
メモリー内で許可されるエントリーの最大数を設定します。無制限のエントリーを許可するためのデフォルト値は-1
です。- ライブラリーモードで、
maxEntries
パラメーターを次のように設定します。<eviction strategy="LRU" maxEntries="200" />
- リモートクライアントモードで、
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. エビクション設定のトラブルシューティング
Red Hat JBoss Data Grid では、キャッシュのサイズを
configuration
要素の max-entries
パラメーターに指定された値よりも大きくすることができます。これは、max-entries
の値を 2 の累乗以外の値に設定することは可能ですが、基盤のアルゴリズムがこの値を V
(max-entries
の値に最も近い 2 を累乗した値) に変更するからです。エビクションアルゴリズムは、キャッシュコンテナーのサイズが V
の値を超えないようにします。
3.3.4. エビクションとパッシベーション
エントリーの 1 つのコピーがメモリーまたはキャッシュストアに維持されるようにするため、パッシベーションはエビクションと共に使用してください。
通常のキャッシュストアの代わりにパッシベーションを使用する主な理由は、パッシベーションを使用するとエントリーの更新に必要なリソースが少なくなることにあります。これは、パッシベーションではキャッシュストアへの更新が不要になるためです。