2014-02-16 59 views
2

我有一个2.0.5版本的三节点Cassandra集群。 RF = 3并且所有数据同步到所有三个节点。 我使用Consistency = ONE从cqlsh中读取数据。 当我关闭两个节点时,我的读取速度比拥有整个群集时快两倍。 从cqlsh进行跟踪显示,当请求被转发到其他节点时,会发生整个群集读取的速度减慢。 所有节点都位于同一个数据中心本地,系统上没有其他活动。 那么,为什么请求有时被转发到其他节点? 即使对于完全相同的密钥,如果我多次重复相同的查询,我会发现有时查询会在本地节点上执行,有时它会被转发,然后变得非常缓慢。Cassandra读取缓慢,多个节点

回答

1

这是由于阅读修理。 默认情况下,读取修复适用于所有具有一致性级别仲裁的读取,或者有10%的机会降低一致性级别,这就是为什么对于一致性级别,有时您会看到更多的活动和更少的活动。

+0

我使用read_repair_chance = 0。所以我不认为这是由于阅读修理。即使是这种情况,我发现这些重定向的次数比我查询中的10%要多得多。 – user3025533

+0

当读取或写入在节点上启动时,该节点充当协调器,并将根据复制因子将请求转发到适当数量的节点。它会根据节点的性能历史选择转发读取请求的节点。所以在请求被转发的情况下,协调者可能认为另一个节点具有更好的性能,并且应该将该请求转发给该节点。 – Navid

+0

有没有办法转发这些请求并使它们始终在本地处理? – user3025533