Cassandra 1.1-24GB RAM和行缓存的设置

Cassandra 1.1-24GB RAM和行缓存的设置,cassandra,Cassandra,我想对Cassandra进行调优,使其适用于行数较少(5-50列)的重读场景。其思想是使用行缓存,并启用键缓存,以防数据对于行缓存来说太大 我有两台Intel Xeon服务器,带有24GB RAM(3个环,两个数据中心,总共提供6台计算机) 这些是我对默认配置所做的更改: cassandra-env.sh 卡桑德拉·亚马尔 其想法是将6GB专用于Cassandra JVM,0.5GB专用于密钥缓存(6GB堆外),14GB专用于行缓存(堆外)。 操作系统仍然有4GB,这应该足够了,因为只有一个JV

我想对Cassandra进行调优,使其适用于行数较少(5-50列)的重读场景。其思想是使用行缓存,并启用键缓存,以防数据对于行缓存来说太大

我有两台Intel Xeon服务器,带有24GB RAM(3个环,两个数据中心,总共提供6台计算机)

这些是我对默认配置所做的更改:

cassandra-env.sh

卡桑德拉·亚马尔

其想法是将6GB专用于Cassandra JVM,0.5GB专用于密钥缓存(6GB堆外),14GB专用于行缓存(堆外)。 操作系统仍然有4GB,这应该足够了,因为只有一个JVM进程在运行,它的开销应该是最大2GB

这个设置是最优的吗?有什么提示吗

谢谢, Maciej

运行并使用建议的值作为初始堆配置。使用“nodetool info”监视堆的使用情况


尽可能使用短列名和合并列。

此设置工作正常-我已经测试过了。

我使用的是1.1.6版本
SerializingCacheProvider将在本机堆区域保存缓存数据
该区域不供GC检查。所以它不会发生在GC中。
您的行缓存大小设置用于序列化缓存的引用对象。
该引用使用FreeableMemory保存(它在1.1.x中,但在1.2之后,它发生了更改)。
换句话说,在计算行缓存大小(以mb为单位)时,不会计算实际缓存值

如果要计算行缓存大小(单位:mb),请尝试从最小大小开始设置。

在我的例子中,当我设置500mb时,每个节点都使用2G旧的gen(根据数据集的处理)

列是以独立的方式读取的,或者您总是读取一行的所有列?然后,也许您可以将数据序列化为单个列(如果不涉及索引),您将减少列数,节省空间和cpu功耗。@MaciejMiklas堆外是否有密钥缓存?不-不可能。请接受@Jongtae Lee的解决方案,而不是您的评论。
#JVM_OPTS="$JVM_OPTS -ea"
MAX_HEAP_SIZE="6G"
HEAP_NEWSIZE="500M"
# do not persist caches to disk
key_cache_save_period: 0
row_cache_save_period: 0

key_cache_size_in_mb: 512
row_cache_size_in_mb: 14336 
row_cache_provider: SerializingCacheProvider