设置建议compaction_throughput_mb_per_sec
说:
将压缩限制为整个系统的给定总吞吐量。插入数据的速度越快,为了保持稳定计数而需要压缩的速度就越快,但一般来说,将其设置为插入数据速率的 16 到 32 倍就足够了。将其设置为 0 将禁用限制。请注意,这考虑了所有类型的压缩,包括验证压缩。*
它有一些限制还是仅取决于插入率?
如何测量插入率?
是否为每个压实机设置此吞吐量
compaction_throughput_mb_per_sec = 64
compactor1 = 64
compactor2 = 64
或者平分
compaction_throughput_mb_per_sec = 64
compactor1 = 32
compactor2 = 32
或者它在每个压实机的运行时发生变化
它主要与写入吞吐量和总体计算资源有关。问题是,大量的写入吞吐量实际上会导致压缩。关于写入吞吐量(插入率)的建议实际上是为了确保压缩不会落后。
这是一件好事!相信我,因为您希望压实能够运行并且不落后。未压缩的 SSTable 文件会因需要查看和管理大量文件而导致读取延迟。
我看到的更大的问题是批处理作业运行,插入一堆数据,并导致压缩运行。压缩所消耗的计算资源会增加两个操作的延迟,从而干扰未来的写入和读取。
一种解决方案是,我们意识到对一个集群的使用是非常非常周期性的,从早上 6 点开始,到晚上 11 点后结束。我们过去常常在午夜做一次
nodetool setcompactionthroughput 256
,然后nodetool setcompactionthroughput 8
在早上做一次。较高的设置允许压实在夜间几乎不受阻碍地运行,同时在白天设置为“滴流”(以免干扰正常操作)。不确定您使用什么来监视集群,但您应该能够从 MBean 中获取每秒写入次数
org.apache.cassandra.metrics
。