估计Cassandra KeyCache

时间:2013-10-17 14:35:55

标签: cassandra

我们目前正在部署更大的Cassandra集群,并正在寻找估算密钥缓存最佳大小的方法。或者更准确地寻找一种在密钥缓存中找出一行大小的方法。

我尝试使用石墨进入集成度量系统,但我无法得到任何明确的答案。此外,我尝试将自己的调试代码放入org.cassandra.io.sstable中,但这并未产生任何具体结果。

我们正在使用Cassandra 1.20.10,但有没有任何万无一失的解决方案来获取密钥缓存中一行的大小?

最诚挚的问候,

2 个答案:

答案 0 :(得分:2)

结帐jamm。它是一个用于测量内存中对象大小的库。

您需要将-javaagent:"/path/to/jamm.jar"添加到启动参数中,但 cassandra配置为以jamm开头,因此如果您更改内部cassandra代码,则已经为您完成。

对象大小(以字节为单位):

MemoryMeter meter = new MemoryMeter();
meter.measureDeep(object);

测量深度是一种更昂贵但更精确的对象内存大小的测量。

答案 1 :(得分:0)

为了估计密钥大小,我们假设您打算在缓存中存储100万个密钥,每个密钥平均长度为60个字节。存储密钥会有一些开销,假设它是40字节,表示每行密钥大小= 100字节。

因为我们需要缓存100万个密钥

总密钥缓存= 1 mn * 100 = 100 MB

为你的密钥空间中的每个CF执行此操作。