Cassandra对多个节点的读取速度较慢

Cassandra对多个节点的读取速度较慢,cassandra,Cassandra,我有一个版本为2.0.5的三节点Cassandra集群。 RF=3,所有数据同步到所有三个节点。 我从cqlsh中读取一致性=1。 当我关闭两个节点时,读取速度是启动整个集群时的两倍。 来自cqlsh的跟踪表明,当请求被转发到其他节点时,读取速度会随着集群的完全启动而减慢。 所有节点都是同一数据中心的本地节点,系统上没有其他活动。 那么,为什么有时会将请求转发到其他节点? 即使对于完全相同的密钥,如果我多次重复相同的查询,我会发现有时查询在本地节点上执行,有时它被转发,然后变得非常慢。这是由于读

我有一个版本为2.0.5的三节点Cassandra集群。 RF=3,所有数据同步到所有三个节点。 我从cqlsh中读取一致性=1。 当我关闭两个节点时,读取速度是启动整个集群时的两倍。 来自cqlsh的跟踪表明,当请求被转发到其他节点时,读取速度会随着集群的完全启动而减慢。 所有节点都是同一数据中心的本地节点,系统上没有其他活动。 那么,为什么有时会将请求转发到其他节点?
即使对于完全相同的密钥,如果我多次重复相同的查询,我会发现有时查询在本地节点上执行,有时它被转发,然后变得非常慢。

这是由于读取修复。
默认情况下,读修复应用于一致性级别为quorum的所有读取,或者一致性级别较低的可能性为10%,这就是为什么对于一致性级别1,有时会看到更多的活动,有时会看到更少的活动

假设集群没有过载,Cassandra应该总是尽可能地进行本地读取。您能在创建错误报告吗?

我使用read\u repair\u chance=0。所以我不认为这是因为阅读修复。即使是这种情况,我看到这些重定向的频率也比我10%的查询要高。当在节点上启动读或写操作时,该节点充当协调器,并将根据复制因子将请求转发到适当数量的节点。它根据节点的性能历史记录选择转发读取请求的节点。因此,在请求被转发的情况下,协调器可能认为另一个节点具有更好的性能,并且应该将请求转发给该节点。有没有一种方法不转发这些请求,而是让它们始终在本地处理?我不这么认为。一般来说,无法保证本地节点拥有数据。当您有3+个节点且rf=3时,会有非节点本地的违抗记录。您遇到的延迟是什么?当我得到重定向时,读取速度是原来的两倍。我试着禁用dynamic snitch,并在不同机架上的每个节点上设置网络拓扑策略,但没有产生任何影响。谢谢Jonathan。我创造了JIRA CASSANDRA-6731