我们目前正在部署更大的Cassandra集群,并正在寻找估算密钥缓存最佳大小的方法。或者更准确地寻找一种在密钥缓存中找出一行大小的方法。
我尝试使用石墨进入集成度量系统,但我无法得到任何明确的答案。此外,我尝试将自己的调试代码放入org.cassandra.io.sstable中,但这并未产生任何具体结果。
我们正在使用Cassandra 1.20.10,但有没有任何万无一失的解决方案来获取密钥缓存中一行的大小?
最诚挚的问候,
本
答案 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执行此操作。