Pivotal Knowledge Base

关注

Tombstone GC机制介绍

适用范围:

      Gemfire 7.0.x 到 8.0.x

目的:

      本文提供了在Gemfire 7.0 版本开始引入的 tombstone GC 机制及其配置参数。

描述:

      在Region启用了一致性检查时,在应用程序删除数值后Gemfire成员不会立刻删除此数值。而是将其以现在版本的形式保留一段时间,以避免可能发生的冲突性操作。此时保留的数值就对应为一个tombstone。GemFire 为了提供一致性,对于partitioned region和 non-replicated regions, 以及 replicated regions都会保留tombstone。
 
      在client cache或non-replicated region中的tombstone会在8分钟后过期,然后立刻被从Cache中删除掉。该间隔时间由系统属性gemfire.non-replicated-tombstone-timeout控制,其默认值为480000毫秒。
 
      而在replicated region或者partitioned region中的tombstone会在10分钟后过期。控制该间隔的系统属性,gemfire.tombstone-timeout,默认值为600000毫秒。这些过期的tombstone会被Gemfire成员的垃圾收集机制处理。在成员自身中所有类型的过期tombstone达到100,000后,垃圾收集会被自动触发。您也可以通过将gemfire.tombstone-gc-threshold的属性设定为一个更小的值来更高频率的执行垃圾收集。
 
      除此之外,还有一些参数可用与tombstone GC调优:
  1. 扫描队列中过期tombstone的时间间隔:
    gemfire.tombstone-scan-interval = 60000 (默认, 毫秒)
  2. 触发tombstone GC的最大空闲内存比例阈值。默认比例应该低于基于LRU的 heap eviction,这样对于tombstone的eviction 才能在对cache中数据的eviction之前执行。
    gemfire.tombstone-gc-memory-threshold = 30 (默认)
  3. 用于诊断tombstone问题的详细 tombstone日志信息:
    gemfire.TombstoneService.VERBOSE = false (默认)

更多信息:

  1. 在启动gemfire服务的脚本中启用tombstone GC的示例参数:
    -J-Dgemfire.tombstone-gc-threshold=20000
  2. 您也可以从CachePerfStats中确认一些tombstone GC的统计信息(stats):
    1. nonReplicatedTombstonesSize
    2. replicatedTombstonesSize
    3. tombstoneCount
    4. tombstoneGCCount

评论

由 Zendesk 提供技术支持