Cassandra 卡桑德拉读取超时
我对卡桑德拉的读取超时有问题。 情景:Cassandra 卡桑德拉读取超时,cassandra,Cassandra,我对卡桑德拉的读取超时有问题。 情景: 3 GB数据加载到Cassandra 1个数据中心内的9个Cassandra节点 复制等于3 一致性级别等于1 卡桑德拉版本2.2.9 链接到cassandra.yaml 测试: 为了进行测试,我使用用于Cassandra的jmeter插件。 请求是在所提供的ID列表中选择行ID的条件。列表始终包含100个ID。每个请求应始终返回100行(所有ID都在数据库中)。 ID是随机的,因此缓存角色减少 样本选择: select * from price.i
- 3 GB数据加载到Cassandra
- 1个数据中心内的9个Cassandra节点
- 复制等于3
- 一致性级别等于1
- 卡桑德拉版本2.2.9
这对Cassandra来说很典型,还是我做错了什么?您在查询中使用的是in query,in query在协调器节点中施加了大量压力。当您在查询中执行in query时,这意味着您正在等待这个协调器节点给您一个响应,它将所有这些查询及其响应保留在堆中,如果ose查询失败,或者协调器失败,您必须重试整个过程 不要在查询中使用executeAsync,而是对每个
no
使用单独的查询。现在,如果一个查询失败,重试只需要一个小的快速查询
或
更改数据模型,以便在查询中使用时可以指定分区键
注意:一次执行多个executeAsync也可以将presser置于群集上。请检查此链接
更多信息:您的查询效率低下,因为您扫描了很多分区。 每个分区存储在不同的节点中。 您应该使用范围条件扫描一个或少于10个分区。 更改数据模型,检查以下链接:
谢谢你的重播。但即使我已经取消了“查询中”,仍然有读取超时。当在12小时内通过6000个线程发送请求时,我得到了0,01%的超时。这正常吗?似乎正常,但如果对您来说不正常,您可以更改数据模型,以便您可以指定分区键并执行范围查询。我的数据模型非常简单。一个表中只有几个属性。最后:一个请求等于一张桌子上的一个问题。有什么建议吗?我不知道原因是什么。