【问题标题】:STCS : how I can improve compaction performance?STCS:如何提高压实性能?
【发布时间】: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% 使用。

问题:

  1. 我可以调整哪些配置参数来尝试提高压缩性能?
  2. compaction 发生时 100% CPU 是否与 GC 压力有关?
  3. 如果压缩太慢,是否需要添加更多节点,或者为每个节点添加更多 CPU/RAM?有帮助吗?

【问题讨论】:

    标签: cassandra datastax datastax-enterprise cassandra-3.0 datastax-startup


    【解决方案1】:

    compaction 的性能取决于底层硬件 - 它的性能取决于使用的磁盘类型等。但它也取决于允许运行多少个 compaction 线程,以及为 compaction 线程配置的吞吐量。从命令行压缩吞吐量由nodetool setcompactionthroughput 配置,而不是您使用的nodetool setcompactionthreshold。并发压缩器的数量设置为nodetool setconcurrentcompactors(但它在 3.1,IIRC 中可用)。您还可以在cassandra.yaml 中配置默认​​值。

    因此,如果您有足够的 CPU 能力和良好的 SSD 磁盘,那么您可以提高压缩吞吐量和压缩器的数量。

    【讨论】:

      猜你喜欢
      • 2011-07-11
      • 2013-04-17
      • 2018-02-14
      • 1970-01-01
      • 1970-01-01
      • 2010-09-30
      • 2010-12-02
      • 2021-06-13
      • 2020-09-09
      相关资源
      最近更新 更多