【发布时间】:2014-01-28 16:54:01
【问题描述】:
我正在使用 NetworkTopologyStrategy 和 PropertyFileSnitch 在 4 个 DC 上测试 Cassandra 2.0 的部署。每个 DC 的复制配额为 1,表示每个 DC 都有完整的数据库。 我的键空间配置为一致性“一”读取。这意味着(据我了解)客户端可以在本地获取数据,如果它可用而不执行任何仲裁等。
不幸的是,我的测试结果表明并非如此。如果我人为地(使用 MiniNet)增加其中一个 DC 的延迟,我可以看到我在其他 DC 上的读取速度显着减慢(与延迟成正比,超过 dynamic_snitch_badness_threshold)。
在这个测试期间,我没有写入任何数据,我只是在执行读取。请注意,如果我完全断开其中一个节点的连接,我的性能将恢复到 100%。
因此我有 2 个问题,1.为什么当我执行一致性一次读取时,一个 DC 会降低整个系统的性能。以及 2. 为什么 Dynamic snytch 不会将通信从性能不佳的节点重新路由(默认设置,测试 20 多分钟)。
问候。
编辑: 所以这是我到目前为止的一系列行动。 当我创建表时,我添加了这个:with read_repair_chance = 0 and speculative_retry='NONE';
问题:当我使用 cqlsh 控制台时,我可以读取当前的一致性级别,并且可以根据文档设置 LOCAL_ONE。但是新的设置是不持久的,当我退出cqlsh再进入时,又可以看到默认的一致性ONE了。好像是按会话设置的?
我在慢速节点上运行 nodetool netstat,我看到没有修复尝试但有一些响应??
Mode: NORMAL
Not sending any streams.
Read Repair Statistics:
Attempted: 0<<-----------
Mismatch (Blocking): 0
Mismatch (Background): 0
Pool Name Active Pending Completed
Commands n/a 0 0
Responses n/a 0 3807<<------------
【问题讨论】:
标签: cassandra latency consistency