STCS:如何提高压实性能?
STCS : how I can improve compaction performance?
我有六个节点的 Cassandra 集群,它承载了一个不可变的大型列族 (cql table)(因为它是一种 历史 table 从应用的角度来看)。这样table大约是400Go的压缩数据,不算多!
所以在截断 table 之后,然后在其中摄取应用程序历史数据,我在每个节点上触发 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% 因为压缩。
问题:
- 我可以调整哪些配置参数来尝试提高压缩性能?
- 压缩发生时的 100% CPU 是否与 GC 压力有关?
- 如果压缩太慢,是否增加节点,或者每个节点增加CPU/RAM?有帮助吗?
压缩的性能取决于底层硬件 - 它的性能取决于使用的磁盘类型等。但它也取决于允许压缩线程的数量 运行,以及配置的吞吐量用于压实线程。从命令行压缩吞吐量由 nodetool setcompactionthroughput
配置,而不是您使用的 nodetool setcompactionthreshold
。并发压缩器的数量是用 nodetool setconcurrentcompactors
设置的(但它在 3.1,IIRC 中可用)。您还可以在 cassandra.yaml
.
中配置默认值
因此,如果您有足够的 CPU 功率和良好的 SSD 磁盘,那么您可以提高压缩吞吐量和压缩器的数量。
我有六个节点的 Cassandra 集群,它承载了一个不可变的大型列族 (cql table)(因为它是一种 历史 table 从应用的角度来看)。这样table大约是400Go的压缩数据,不算多!
所以在截断 table 之后,然后在其中摄取应用程序历史数据,我在每个节点上触发 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% 因为压缩。
问题:
- 我可以调整哪些配置参数来尝试提高压缩性能?
- 压缩发生时的 100% CPU 是否与 GC 压力有关?
- 如果压缩太慢,是否增加节点,或者每个节点增加CPU/RAM?有帮助吗?
压缩的性能取决于底层硬件 - 它的性能取决于使用的磁盘类型等。但它也取决于允许压缩线程的数量 运行,以及配置的吞吐量用于压实线程。从命令行压缩吞吐量由 nodetool setcompactionthroughput
配置,而不是您使用的 nodetool setcompactionthreshold
。并发压缩器的数量是用 nodetool setconcurrentcompactors
设置的(但它在 3.1,IIRC 中可用)。您还可以在 cassandra.yaml
.
因此,如果您有足够的 CPU 功率和良好的 SSD 磁盘,那么您可以提高压缩吞吐量和压缩器的数量。