修复超时

时间:2015-08-05 06:18:09

标签: cassandra cassandra-2.0 datastax-java-driver

我迟到了一个使用LeveledCompactionStrategy设计的表的例外。

  

com.datastax.driver.core.exceptions.ReadTimeoutException:Cassandra   在一致性LOCAL_QUORUM读取查询期间超时(超时时间   等待修复不一致的副本)   com.datastax.driver.core.exceptions.ReadTimeoutException.copy(ReadTimeoutException.java:69)   在   com.datastax.driver.core.DefaultResultSetFuture.extractCauseFromExecutionException(DefaultResultSetFuture.java:291)   在   com.datastax.driver.core.DefaultResultSetFuture.getUninterruptibly(DefaultResultSetFuture.java:205)   在   com.datastax.driver.core.AbstractSession.execute(AbstractSession.java:52)

现在,我通过将gc_grace_seconds降低到7200来降低强度(这是因为它包含经常更新内容的行。群集键的数量可能大约为1000但每个都会更新每个所以,不想遇到TomsbtoneThreshold问题)并将sstable_size_in_mb增加到250以使其全部处于一个级别。

我想知道应该为此做些什么。

1.我应该将read_repair_chance调整为更高的值或将speculative_retry调整为更高的百分位?

2.如果我选择1,LOCAL_QUORUM是否会触发读取修复,以便不惜一切代价同步其副本之间的所有数据?那么,从技术上讲这没有效果?那么,在这种情况下,我应该将read_repair_chance降低到较低的值,以便后台进程处理这个吗?

如果有人澄清这一点会很好......

1 个答案:

答案 0 :(得分:0)

我不能就此给你一个科学的答案,但是通过我的经验(当这样的事情发生时),它通常是一个疯狂的单个节点。如果您的复制级别为3,并且您的群集包含6个节点,那么我只是停用相关节点,完全删除它的数据,然后再次加入群集。这很少发生,但在我的情况下,这是最快的解决方案,因为修复大多数时间永远不会结束,特别是如果您的节点仍然是群集的一部分并且具有大量读/写流量。