关键问题的 Datastax 不匹配

Sre*_*u V 5 cassandra datastax-enterprise datastax-java-driver

我们当前的设置包含具有 3 节点集群的 DSE 5.0.2 版本。当前我们面临重负载和节点故障问题。Debug.log 详细信息如下:

DEBUG [ReadRepairStage:8] 2016-09-27 14:11:58,781 ReadCallback.java:234 - Digest mismatch: org.apache.cassandra.service.DigestMismatchException: Mismatch for key DecoratedKey(5503649670304043860, 343233) (45cf191fb10d902dc052aa76f7f0b54d vs ffa7b4097e7fa05de794371092c51c68)
    at org.apache.cassandra.service.DigestResolver.resolve(DigestResolver.java:85) ~[cassandra-all-3.0.7.1159.jar:3.0.7.1159]
    at org.apache.cassandra.service.ReadCallback$AsyncRepairRunner.run(ReadCallback.java:225) ~[cassandra-all-3.0.7.1159.jar:3.0.7.1159]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_77]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_77]
    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_77]
Run Code Online (Sandbox Code Playgroud)

mar*_*rkc 4

我是从您发布的错误含义的角度来回答这个问题的。但我认为这不仅仅是造成您问题的原因。如果没有看到集群中节点的所有日志,就很难判断。

您发布的内容Digest mismatch实际上来自读取修复。这个文档链接在较高层次上解释了它(注意与文档所说相反,读取修复也可能在其他 CL 处阻塞):

https://docs.datastax.com/en/cassandra/3.0/cassandra/operations/opsRepairNodesReadRepair.html

如果您看到太多读取修复并且您有多个 DC,您可能需要考虑设置read_repair_chance较低和增加dclocal_read_repair_chanceiirc,默认情况下它们分别为 0.1 和 0,因此并不总是最佳。

我已经看到这些会导致读取超时,因为摘要不匹配可能会导致阻塞读取修复。如果您认为这导致了问题,最好的选择是在带有跟踪的 cqlsh 中运行查询,或者使用概率跟踪来记录查询,您可以在回顾时查看跟踪

文档链接:

https://docs.datastax.com/en/cql/3.3/cql/cql_reference/tracing_r.html

https://docs.datastax.com/en/cassandra/3.0/cassandra/tools/toolsSetTraceProbability.html