Pivotal Knowledge Base

フォローする

Tombstone GC 機構について

適用範囲:

Gemfire 7.0.x から 8.0.x

目的:

本文書では Tombstone GC 機構概要と、GemFire 7.0 で導入された制御パラメーターについて解説する。

解説:

リージョンに対する一貫性チェック機構を有効にした場合、GemFire のメンバーは、アプリケーションがエントリーの削除を実行しても、すぐには当該リージョン内からエントリーの実体削除は行わない。代わりに、メンバーは、複数のリージョン操作で発生する可能性のある競合を検出するため、一定期間、現在のバージョンスタンプ情報とともに当該エントリーを保持し続ける。この一定期間保持されるエントリーを、Tombstone と呼ぶ。GemFire は、レプリケーションリージョン同様、パーティションリージョンや他の非レプリケーションリージョンに対しても、一貫性維持のため Tombstone を保持する。

クライアントキャッシュや非レプリケーションリージョン(パーティションリージョンは含まず)における Tombstone は、生成されてから 8 分後に有効期限が切れ、これ以降、当該 Tombstone はキャッシュからすぐに削除される。システムパラメーターの gemfire.non-replicated-tombstone-timeout で、このタイムアウト値をデフォルトの 480000 ミリ秒から変更可能である。

レプリケーションリージョンやパーティションリージョンの Tombstone は 10 分後に有効期限が切れる。システムパラメーターの gemfire.tombstone-timeout で、このタイムアウト値をデフォルトの 600000 ミリ秒から変更可能である。レプリケーションリージョンやパーティションリージョンで期限切れした Tombstone は GemFire メンバーによる GC(Garbage Collection)対象となる。当該 GC は、ローカル GemFire メンバーによって、期限切れした任意の型の Tombstone 数が 100,000 を超えると自動的に実行される。オプションで、システムプロパティーの gemfire.tombstone-gc-threshold に、100000 よりも小さい値を設定すると、より頻繁に GC を行うようになる。

以上に加えて、他にいくつかの有用な Tombstone GC チューニングパラメーターが存在する:

  1. キューに蓄積されている期限切れした Tombstone をスキャンする間隔(単位:ミリ秒):
    gemfire.tombstone-scan-interval = 60000 (デフォルト値)
  2. Tombstone GC を実行する、空きメモリ容量の閾値(単位:パーセント)。デフォルト値は、LRU Heap Evictor がキャッシュデータのエヴィクションを実行する前に、期限切れ Tombstone を削除するよう、それよりも幾分低い値に設定されている。
    gemfire.tombstone-gc-memory-threshold = 30 (デフォルト値)
  3. Tombstone 関連の問題を診断するための、冗長 Tombstone ログ出力の有無:
    gemfire.TombstoneService.VERBOSE = false (デフォルトは無効)

追加情報:

  1. GemFire サーバー起動スクリプトにて、Tombstone GC パラメーターを設定する
    -J-Dgemfire.tombstone-gc-threshold=20000
  2. Tombstone GC 関連の統計情報(stats)は、以下の CachePerfStats におけるメトリックにて確認可能:
    1. nonReplicatedTombstonesSize
    2. replicatedTombstonesSize
    3. tombstoneCount
    4. tombstoneGCCount

コメント

Powered by Zendesk