我们正在运行由 Cassandra 支持的 Titan Graph DB 服务器作为持久存储,并且遇到了达到 Cassandra 墓碑阈值限制的问题,这导致我们的查询随着数据的累积而定期失败/超时。似乎压缩无法跟上添加的墓碑数量。
我们的用例支持:
- 高读/写吞吐量。
- 读取灵敏度高。
- Titan中节点值的频繁更新。导致在 Cassandra 中更新行。
鉴于上述用例,我们已经在优化 Cassandra 以积极地执行以下操作:
- 通过使用水平压实策略进行积极压实
- 使用 tombstone_compaction_interval 作为 60 秒。
- 使用 tombstone_threshold 为 0.01
- 将 gc_grace_seconds 设置为 1800
尽管进行了以下优化,我们仍然在 Cassandra 日志中看到类似于以下内容的警告: [WARN] (ReadStage:7510) org.apache.cassandra.db.filter.SliceQueryFilter: Read 0 live and 10350 tombstoned cells in .graphindex(参见 tombstone_warn_threshold )。请求了 8001 列,slices=[00-ff],delInfo={deletedAt=-9223372036854775808,localDeletion=2147483647}
有时,随着时间的推移,我们还会看到故障阈值被突破并导致错误。
我们的 cassandra.yaml 文件的 tombstone_warn_threshold 为 10000,并且 tombstone_failure_threshold 远高于建议的 250000,但没有真正明显的好处。
如果有进一步优化的空间,任何可以为我们指出正确配置的帮助将不胜感激。提前感谢您的时间和帮助。