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

时间:2012-11-02 13:44:36

标签: cassandra

我想调整Cassandra的重读方案,使用瘦行(5-50列)。我们的想法是使用行缓存,并在以下情况下启用密钥缓存 - 当数据对于行缓存来说很大时。

我有两个Intel Xeon服务器,配备24GB RAM(3个环,两个数据中心 - 共计6台机器)

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

cassandra-env.sh

#JVM_OPTS="$JVM_OPTS -ea"
MAX_HEAP_SIZE="6G"
HEAP_NEWSIZE="500M"

cassandra.yaml

# 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

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

此设置是否最佳?任何提示?

谢谢, 马切伊

3 个答案:

答案 0 :(得分:3)

我正在使用1.1.6版本。
SerializingCacheProvider将在Native Heap区域保存缓存数据。
该区域不适用于GC检查。所以GC不会发生 您的row_cache_size_in_mb设置用于SerializingCache的引用对象 使用FreeableMemory保存该引用(它在1.1.x中,但在1.2之后,它改变了) 换句话说,计算row_cache_size_in_mb时不会计算您的实际缓存值。

结果如果要计算row_cache_size_in_mb,请尝试从最小尺寸设置。
在我的情况下,当我设置500mb时,每个节点都使用2G old gen。(根据交易哪个数据集)

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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