2

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

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

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

最诚挚的问候,

4

2 回答 2

2

检查果酱。它是一个用于测量内存中对象大小的库。

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

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

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

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

于 2013-10-18T13:20:01.863 回答
0

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

因为我们需要缓存 100 万个键

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

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

于 2013-10-18T07:39:30.473 回答