我们正在使用 cassandra-1.1。
出于某种优化目的,我们决定在我们的键空间中增加列族的数量。
对堆利用率有影响吗?
Cassandra 是否有可能内存不足?
我们正在使用 cassandra-1.1。
出于某种优化目的,我们决定在我们的键空间中增加列族的数量。
对堆利用率有影响吗?
Cassandra 是否有可能内存不足?
最近版本的 Cassandra 为每个列族在堆上分配了至少 1MB 的空间,因此您可以将其视为堆消耗的下限。布隆过滤器也以一种不一定取决于您使用列族的方式占用堆空间的方式。
您是在谈论从 5 到 10 个列族吗?还是10到1000?您当然可以用 10 或 1000 个列族耗尽堆空间,这在很大程度上取决于您插入数据的速率。
根据 Cassandra Wiki,“每个节点”消耗的堆大小定义为: memtable_throughput_in_mb * 3 * 热 CF 数量 + 1G + 内部缓存 (参考:MemtableThresholds)
那么回答第一个问题: 对堆利用率有影响吗? 是的。
关于 q2,我坚信最新版本不会出现 OOM。正如您提到的 Cassandra 1.1 版,每个 CF 配置 memtable_throughput_in_mb 被全局内存配置替换 - memtable_total_space_in_mb。这个配置等价于 -memtable_throughput_in_mb * 热 CF 的数量,在上面提到的公式中。这确保了 JVM 堆大小不会随着 CF 的数量而扩展,并且始终由全局配置保护。