Cassandra 行缓存大小增加但未接收行请求

Posted

技术标签:

【中文标题】Cassandra 行缓存大小增加但未接收行请求【英文标题】:Cassandra Row Cache size increased but not receiving row requests 【发布时间】:2016-05-06 09:02:27 【问题描述】:

我在 AWS EC2 实例上使用 Cassandra 2.2.6 datastax AMI 来分析行缓存性能。即使在创建三个启用行缓存并增加 row_cache_size、row_cache_keys_to_save 和 row_cache_save_period 的表之后。 使用 Cassandra 压力工具使用 5M 写入请求填充缓存内存。 我无法通过使用统一(1..100000)的读取繁重的 Cassandra 压力测试获得行缓存读取请求和行缓存命中。

节点工具信息

ID                     : 705c2b22-d049-4ea3-a073-967c3d14cb62
Gossip active          : true
Thrift active          : false
Native Transport active: true
Load                   : 2.74 GB
Generation No          : 1462522631
Uptime (seconds)       : 1543
Heap Memory (MB)       : 936.27 / 1850.00
Off Heap Memory (MB)   : 13.10
Data Center            : us-east
Rack                   : 1a
Exceptions             : 0

Key Cache              : entries 0, size 0 bytes, capacity 0 bytes, 0 hits, 0 requests, NaN recent hit rate, 14400 save period in seconds
    Row Cache              : entries 0, size 0 bytes, capacity 1000 MB, 0 hits, 0 

requests, NaN recent hit rate, 14400 save period in seconds

Counter Cache          : entries 0, size 0 bytes, capacity 46 MB, 0 hits, 0 requests, NaN recent hit rate, 7200 save period in seconds

【问题讨论】:

【参考方案1】:

从数据库中读取数据时会填充行缓存。每次更新数据行缓存时都会失效。您能否解释一下您是如何对此进行测试的?您的实际结果与期望结果是什么?

【讨论】:

我已经使用 Cassandra 压力工具进行了测试。我尝试通过发送 5M 写请求来填充缓存内存。后来尝试通过使用 UNIFORM(1...100000) 发送 5M 读取请求来测试行缓存性能。我正在尝试分析行缓存性能,期望获得更好的命中率或除零以外的结果。对不起,如果这个问题看起来是假设性的和愚蠢的。 此测试不会显示您要查找的内容。这就是我在之前的回答中试图解释的内容,但现在更清楚了。行缓存在第一次读取时填充,因此当您再次读取相同的数据时,您会从缓存中读取它。使用这种压力测试配置,您永远不会两次读取相同的数据。 非常感谢!这对我帮助很大。

以上是关于Cassandra 行缓存大小增加但未接收行请求的主要内容,如果未能解决你的问题,请参考以下文章

为什么在将Cassandra迁移到Cosmos之后数据大小会增加?

如何增加请求行/字段大小限制?

如何从cassandra中非常大的表中读取所有行?

以编程方式获取缓存行大小?

BigQuery:插入行,但未写入

浏览器输入url,缓存策略相关