【发布时间】:2019-09-29 07:29:56
【问题描述】:
我有六个节点的 Cassandra 集群,其中托管一个不可变的大型列族(cql 表)(因为从应用程序的角度来看,它是一种历史表)。这样的表大约是400Go的压缩数据,不是那么多!
所以在截断表之后,然后摄取其中的应用历史数据,我在每个节点上触发 nodetool compact,为了获得最佳的读取性能,通过减少数量SSTables。压缩策略是STCS。
运行 nodetool compact 后,我触发 nodetool compactionstats 跟踪压缩进度:
id compaction type keyspace table completed total unit progress
xxx Compaction mykeyspace mytable 3.65 GiB 1.11 TiB bytes 0.32%
小时后我在同一个节点上:
id compaction type keyspace table completed total unit progress
xxx Compaction mykeyspace mytable 4.08 GiB 1.11 TiB bytes 0.36%
所以压缩过程似乎有效,但它非常慢。
即使使用 nodetool setcompactionthreshold -- 0,压缩仍然非常缓慢。此外,由于这种压缩,CPU 似乎已被 100% 使用。
问题:
- 我可以调整哪些配置参数来尝试提高压缩性能?
- compaction 发生时 100% CPU 是否与 GC 压力有关?
- 如果压缩太慢,是否需要添加更多节点,或者为每个节点添加更多 CPU/RAM?有帮助吗?
【问题讨论】:
标签: cassandra datastax datastax-enterprise cassandra-3.0 datastax-startup