首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取Cassandra tombstone_warn_threshold错误

获取Cassandra tombstone_warn_threshold错误
EN

Stack Overflow用户
提问于 2017-02-23 21:05:45
回答 1查看 3.4K关注 0票数 0

我们在我们的产品上有一个Cassandra设置。有两个表,其中包含大约2000万条记录。为了减少记录的数量,我们删除了不需要的记录,并将ttl设置为在一段时间后删除数据。我们现在已经将宽限期设置为1天。我们还在每个Cassandra节点上运行了nodetool修复(一次一个)。群集中共有5个节点,replication_factor为3。Cassandra版本为2.1.14

在Cassandra日志中,我经常看到以下错误:

代码语言:javascript
复制
WARN  [SharedPool-Worker-33] 2017-02-23 06:09:02,617 SliceQueryFilter.java:320 - Read 207 live and 3059 tombstone cells in event for key: 101:10001Njh:22017 (see tombstone_warn_threshold). 5000 columns were requested, slices=[-]

我运行了命令nodetool cfhistograms myekyspace事件;下面是相同命令的输出

我不能完全分析上述输出,但我知道sstable计数太高了。

任何关于我们可以做什么来解决这个问题或优化我们的Cassandra的想法。

java堆大小设置为8 GB,我们使用的是CMS垃圾收集。

nodetool cfstats mykeyspace.event的输出

表结构

代码语言:javascript
复制
@chris-lohfink  - Updated the question with the cfstats details and 
CREATE TABLE vcs.events (
    v_id text,
    c_id text,
    e_month int,
    sid text,
    e_id timeuuid,
    cr_p_id text,
    e_bucket text,
    e_media map<text, text>,
    e_meta map<text, text>,
    e_met map<text, double>,
    tag set<text>,
    etime timestamp,
    etype text,
    isfin boolean,
    r_mode text,
    state text,
    PRIMARY KEY ((v_id, c_id, e_month), sid, e_id)
) WITH CLUSTERING ORDER BY (sid ASC, e_id ASC)
    AND bloom_filter_fp_chance = 0.01
    AND caching = '{"keys":"ALL", "rows_per_partition":"NONE"}'
    AND comment = ''
    AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy'}
    AND compression = {'sstable_compression': 'org.apache.cassandra.io.compress.LZ4Compressor'}
    AND dclocal_read_repair_chance = 0.1
    AND default_time_to_live = 0
    AND gc_grace_seconds = 86400
    AND max_index_interval = 2048
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair_chance = 0.0
    AND speculative_retry = '99.0PERCENTILE';
CREATE INDEX events_id_idx ON mykeyspace.event (e_id);
CREATE INDEX events_type_idx ON mykeyspace.event (etype);
CREATE INDEX events_finalized_idx ON mykeyspace.event (isfin);
CREATE INDEX idx_state ON mykeyspace.event (state);

EN

回答 1

Stack Overflow用户

发布于 2017-03-03 15:14:42

当您删除Cassandra中的数据时,数据不会立即删除,相反,Cassandra会创建指示行/列已删除的逻辑删除。Tombstone被存储到gc_grace_seconds。

在您的案例中,每天有300K条记录被删除,这表明创建了更多的tombstones,并影响了您的性能。您应该在您的数据模型上工作以避免此错误。请参阅从34到42的幻灯片,了解http://www.slideshare.net/planetcassandra/8-axel-liljencrantz-23204252中的删除和TTL

还可以从下面的Cassandra文档中查看数据模型对tombstones的影响:http://www.datastax.com/dev/blog/cassandra-anti-patterns-queues-and-queue-like-datasets

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42416605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档