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. ランタイム時の最大エントリー値の変更
エビクションの最大エントリー値は、サーバーを再起動せずにクラスター化されたキャッシュに対して設定できます。この設定は、クラスター内の各ノードで実行されます。
エビクション設定の最大エントリー値を変更するには、以下のステップを実行します。
キャッシュ 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 つのコピーがメモリーまたはキャッシュストアに維持されるようにするため、パッシベーションはエビクションと共に使用してください。
通常のキャッシュストアの代わりにパッシベーションを使用する主な理由は、パッシベーションを使用するとエントリーの更新に必要なリソースが少なくなることにあります。これは、パッシベーションではキャッシュストアへの更新が不要になるためです。