【问题标题】:Cassandra node heap pressure during compaction after bulk load批量加载后压缩期间的 Cassandra 节点堆压力
【发布时间】:2015-03-26 07:46:03
【问题描述】:

在使用 sstableloader 批量加载数据后,每个 Cassandra 节点最终会得到大约 3.000 个大小约为 32MB 的 sstable。

试图减少数量。 sstables 我在每个节点上运行“nodetool compact”。

这种压缩给堆带来了巨大的压力。我尝试使用 8GB 堆(还有 16GB,尽管我知道不建议这样做)。在这两种情况下,C* 节点每次扫描都会进行大约 90 秒的垃圾收集。总之,compaction 无法完成。

每台机器都有 32 GB 的物理内存。批量加载的表使用 STCS 和缓存 = 'keys_only'。

这导致了一些问题:

  1. 为什么许多较小的 sstable 在压缩期间对堆的压力比较少、较小的 sstable 更大?
  2. 什么是正确的策略来压缩这些批量加载的 sstable?添加堆似乎并不能解决它。
  3. 移动一些 sstable 是否安全(使用 linux 命令 mv),使用剩余的 sstable 运行“nodetool compact”。然后 mv 移动的 sstables 回到原来的位置并再次运行“nodetool compact”。 (黑客,我知道)。

更新

实际上,我有这些数量的 sstables - 大多数大小相似。由于内存不足,主要压缩无法完成。而且我找不到一种方法来进行小型压实:

【问题讨论】:

  • 顺便说一句;问题的答案没有。三是“不”。幸运的是,“nodetool repair”为我尝试过的节点提供了救援。
  • 啊……再说一遍。我认为“nodetool refresh”可以恢复我移回的 sstables。

标签: cassandra


【解决方案1】:

尝试降低concurrent compactorsthreshold for max. in memory row size 的数量。您在使用 SSD 吗?

【讨论】:

  • 我使用 SSD 的提交日志;但是为数据旋转磁盘。感谢您的建议 - 我会看看这些设置。
猜你喜欢
  • 1970-01-01
  • 2017-09-11
  • 2022-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-14
  • 1970-01-01
相关资源
最近更新 更多