定期更新特定行集会降低 cassandra 的性能

Regular updates on particular set of rows has degraded performance of cassandra

在我的一个 table 中,大约有 2000 万行(将来会增加更多)需要每天更新。

早些时候这个更新过程非常顺利(吞吐量大约 100K updates/min,机器上的平均负载没有任何增加)。但是经过1个月的定期更新,性能下降了很多。现在,即使我尝试以低吞吐量(即大约 30K rpm)进行更新,机器上的平均负载也会变高,其他查询也会受到影响。

Cassandra 版本--> 2.0.14

机器配置--> (RAID-1, 1TB, 32core, 64 GB RAM), 相似的4台机器,复制因子为3.

给定 table 的压缩策略 --> SizeTiered

我应该尝试对其进行哪些更改?

这里有一些想法供您参考:

  • Cassandra 更喜欢更多的小机器而不是一些大机器。建议最大保留堆 8GB。大堆 = 长时间 GC = 暂停和较低的性能(这可能是你的情况,但你必须监视你的环境,检查它是否是 GC 占用 CPU 或什么)。也不要在单个节点上存储太多数据,修复和压缩可能会花费太长时间,需要 cpu.

  • 您可以尝试调整您的 cassandra(参见 this guide - 不幸的是对于 Cassandra 2.1)

  • 你也可以考虑升级cassandra
  • 如果您每天更新整个 table - 那么这可能是 cassandra 的反模式 - 大量更新 = 更长的压缩。如果你想保持当前的设计,我也建议有更多的节点,每个节点的数据更少,并检查压缩过程需要多少时间和资源