0

我有一个 3 节点 cassandra (2.1.8) 集群,我正在使用 titan db (v0.5.4) 在其上运行应用程序。数据量非常小(<20 MB),但由于我的用例需要不时删除,我已经遇到了墓碑问题。我无法摆脱已经创建的墓碑。我尝试的解决方案是:

  • 将指定graphindex表的 gc_grace降低到 60s
  • 运行 nodetool 刷新
  • 运行 nodetool 修复
  • 对于 titan.graphindex 表设置压缩选项为 {'class': 'SizeTieredCompactionStrategy', 'unchecked_tombstone_compaction': 'true', 'tombstone_compaction_interval': '0', 'tombstone_threshold': '0.1'};
  • 从 jmx 运行 forceUserDefinedCompaction。

结果统计数据有所下降,但平均每片墓碑数和每片最大墓碑数仍然不令人满意:

Table: graphindex
    **SSTable count: 1**
    Space used (live): 661873
    Space used (total): 661873
    Space used by snapshots (total): 0
    Off heap memory used (total): 6544
    SSTable Compression Ratio: 0.6139286819777781
    Number of keys (estimate): 4082
    Memtable cell count: 0
    Memtable data size: 0
    Memtable off heap memory used: 0
    Memtable switch count: 15
    Local read count: 25983
    Local read latency: 0.931 ms
    Local write count: 23610
    Local write latency: 0.057 ms
    Pending flushes: 0
    Bloom filter false positives: 0
    Bloom filter false ratio: 0.00000
    Bloom filter space used: 5208
    Bloom filter off heap memory used: 5200
    Index summary off heap memory used: 1248
    Compression metadata off heap memory used: 96
    Compacted partition minimum bytes: 43
    Compacted partition maximum bytes: 152321
    Compacted partition mean bytes: 203
    Average live cells per slice (last five minutes): 728.4188892737559
    Maximum live cells per slice (last five minutes): 4025.0
    **Average tombstones per slice (last five minutes): 317.34938228841935**
    **Maximum tombstones per slice (last five minutes): 8031.0**

是否有任何选项可以删除所有墓碑?提前感谢您的任何建议。

4

1 回答 1

1

问题已经解决了。

事实证明,有关统计信息的信息非常具有误导性,因为“每片的平均墓碑(最后五分钟)”和“每片的最大墓碑(最后五分钟)”并且可能在最后 5 分钟内未计算活细胞统计数据是它是由 nodetool cfstats 编写的。但是它们是从节点启动开始计算的。我的节点运行了几个月,所以即使清除了墓碑,我也没有注意到太大的差异,因为统计值已经很高的天数太大了。重新启动节点后,统计信息已清除,我可以看到压缩生效。

很遗憾,我很难在统计描述中找到有关此错误的信息(https://issues.apache.org/jira/browse/CASSANDRA-7731

希望这可以帮助某人更快地获得这些信息。

于 2015-12-03T21:11:54.303 回答