11.17.1 複数のキャッシュを扱う場合のデータ管理領域の扱い
スパイク抑止機能を有効にしている場合に複数のキャッシュを扱うとき,データ管理領域がどのように扱われるかを以降の(1)〜(3)で説明します。(1)〜(3)を考慮しなかった場合,予期しないデータ管理領域が作成されることでメモリが枯渇するおそれがあります。
なお,作成するキャッシュが1つで,該当のキャッシュを削除しないで使用する場合は,以降の(1)〜(3)を考慮する必要はありません。
(1) 複数のキャッシュを作成した場合
複数のキャッシュを作成した場合,それぞれのキャッシュ定義ファイルに指定された次に示す3つのパラメタの指定値に従い,それぞれのキャッシュ作成時にデータ管理領域は初期化されます。1EADSサーバ内で初期化されるデータ管理領域の件数の合計は,それぞれのキャッシュで初期化された件数の合計になります。
-
データ件数(eads.cache.spikeSuppression.keyCountパラメタ)
-
グループ名の数(eads.cache.spikeSuppression.groupCountパラメタ)
-
keyのハッシュ値のユニーク数(eads.cache.spikeSuppression.uniqueHashValueCountパラメタ)
上記3つのパラメタを,以降では初期化件数のパラメタと呼びます。
初期化されたデータ管理領域はキャッシュ間で共有して使用されます。このため,キャッシュ1とキャッシュ2をそれぞれ作成したあとに,キャッシュ1作成時に初期化したデータ管理領域の件数以上のデータ件数をキャッシュ1に格納した場合,超過分はキャッシュ2作成時に初期化したデータ管理領域を使用することがあります。
(2) キャッシュの削除と別キャッシュの作成をした場合
キャッシュを削除した場合,そのキャッシュの作成時に初期化したデータ管理領域は,一部を除いて削除されずにEADSサーバのメモリ上に残り,ほかのキャッシュから使用できます。
あるキャッシュを削除したあとに別のキャッシュを作成した場合,次に示す1.と2.の値を比較し,どちらの値が小さいかによって,使用されるデータ管理領域が異なります。
-
これまでのキャッシュ作成時に初期化したデータ管理領域の件数の合計
-
作成中のキャッシュを含め,存在する全キャッシュの初期化件数のパラメタの指定値の合計
1.の値の方が小さい場合は,差分となる件数分のデータ管理領域が初期化されます。
2.の値の方が小さい場合は,新しくデータ管理領域の初期化は行われず,初期化済みでメモリ上に残っているデータ管理領域が使用されます。
データ管理領域は上述のとおり扱われるため,キャッシュの削除と作成を繰り返しても,必要以上にデータ管理領域が初期化されることはありません。なお,初期化件数の管理は,データ管理領域の種類ごとに行われます。
(3) キャッシュの削除と作成を行う場合の注意点
キャッシュを削除してから別のキャッシュを作成する場合と,キャッシュを作成してから別のキャッシュを削除する場合では,キャッシュ作成時に初期化されるデータ管理領域の件数が異なります。
先にキャッシュを削除した場合は,存在するキャッシュの,初期化件数のパラメタの指定値の合計が減少するため,別のキャッシュを作成する際には,不足した件数分だけ初期化が行われます。
先にキャッシュを作成した場合は,存在するキャッシュの,初期化件数のパラメタの指定値の合計が減少していないので,先に削除した場合に比べて,多くのデータ管理領域を初期化することになります。
そのため,キャッシュの削除と作成を行う場合は,必要以上にデータ管理領域が初期化されないようにするために,先にキャッシュを削除してからキャッシュを作成する運用を推奨します。
誤って過剰な件数のデータ管理領域を初期化した場合や,キャッシュの削除と作成の順番を誤った場合などでメモリ上からデータ管理領域を削除したい場合,EADSサーバを停止し,パラメタを修正してから,再起動する必要があります。
再起動の手順は,1台ずつ計画縮退と復旧を順次実行する方法と,クラスタを停止,起動する方法の2つがあります。再起動の方法を次に示します。
- ■1台ずつ計画縮退と復旧を順次実行する方法
-
次の1.〜4.をクラスタ内のすべてのEADSサーバで行います。なお,この方法は多重度が2以上の場合だけ実行できます。
-
クラスタ内のすべてのEADSサーバに異常がないことを確認する
eztool status -v
-
再起動したいEADSサーバを縮退および終了する
eztool isolate --stopコマンドを実行して,再起動するEADSサーバを縮退および終了します。
eztool isolate -stop
-
停止状態のEADSサーバを再起動する
ezstart -rコマンドを実行する場合
ezstart -r
ezserver -rコマンドを実行する場合
ezserver -r
-
再起動したEADSサーバとクラスタ内のすべてのEADSサーバがクラスタに参加していることを確認する
eztool status -v
クラスタに参加している場合,Cluster欄にonlineが表示されます。
-
- ■クラスタを停止,起動する方法
-
-
クラスタを閉塞状態にする
eztool close
-
閉塞していることを確認する
eztool status
閉塞している場合,State欄にclosedが表示されます。
-
EADSサーバを終了する
eztool stop
-
EADSサーバが終了していることを確認する
EADSサーバのメッセージログを確認します。終了している場合,「KDEA00002-I The server will now shut down.」のメッセージがサーバメッセージログに出力されます。
-
EADSサーバを起動する
ezstart
-
初期化が完了していることを確認する
eztool status
初期化が完了している場合,State欄にinitializedが表示されます。
-
データをメモリ上に読み込ませる
eztool import
-