【问题标题】:Does very short TTL in Cassandra data lead to performance problems?Cassandra 数据中非常短的 TTL 会导致性能问题吗?
【发布时间】:2018-10-29 15:26:22
【问题描述】:

对于我们真正的高流量网站,我们设置了自己的跟踪解决方案。我们在峰值时每秒记录 >1k 次展示。为此,我们正在使用最新的 Cassandra 3。

现在我们要对这些数据进行实时监控。问题是,实际记录的数据的结构不好,无法从中生成统计信息。所以我想到了 Cassandra 中的一个新表,它有一个匹配的分区/主键,并且由一个额外的 INSERT 填充。但我不确定这是否是卡桑德拉的杀手。正如我所说,只有实时统计数据很重要,所以我想为这个监控表中的所有数据添加一个 TTL,比如说 60 秒。这应确保自动删除旧数据。

但是谁能说这是否会导致如此高的流量出现问题,因为每分钟有这么多的删除?由于我们仅从该监控表中选择最后 5-10 秒,因此 SELECT 中的墓碑可能不是问题,但我认为可能存在大量压缩和 GC 破坏性能!?

【问题讨论】:

  • 为什么需要这么小的TTL?例如,您不能将信息保留 1 天吗?此外,无论如何您都会进行压缩,因为您在表中插入了很多内容。

标签: cassandra cassandra-3.0 ttl


【解决方案1】:

是的,显然会。

拥有较短的 TTL 意味着在您的系统中引入了太多的墓碑,这可能会导致:

1.查询流产

2.内存不足和堆压力

3.延迟

在这种情况下,您应该非常频繁地运行压缩以从系统中清除墓碑,但这也会带来资源、空间消耗和高 IO 的缺点。

【讨论】:

  • 谢谢,但是 60 秒的 TTL 和一年有什么区别?如果流量一直这么高,我看不出有什么区别,除了如果 TTL 是一年,集群会随着时间的推移而增长。如果 Cassandra 必须在 60 秒或一年内清理刚刚发生的 1000 次展示,这对工作负载没有影响,但对于一个保存一年数据的大型集群的压缩可能会更昂贵一些。我对吗?使用 1 年的 TTL,您只需延迟 60 秒的 TTL 在一分钟内发生的工作负载。
猜你喜欢
  • 1970-01-01
  • 2014-12-04
  • 2017-03-10
  • 2015-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多