我们的一个应用程序偶尔会出现错误:
Cassandra timeout during read query at consistency LOCAL_QUORUM (2 responses were required but only 1 replica responded)
在一个小时的过程中,我们可能会收到10,000或更多查询中的20或30。通常,重试查询即可。
这似乎是某种超时。该错误出现在应用程序日志中,但在cassandra system.log或debug.log中我没有看到任何相应的错误或警告,或者真正的内容。
我在网上进行的所有搜索都会导致人们看到一致的查询,但对我而言却不一致。群集本身运行状况良好,其他查询返回的结果也很好。查询的表不大(每台服务器上几十MB)。查看表历史图,我看不到任何有关该表在任何服务器上进行读取或写入的过大操作。 CPU,内存等都很好。
该表的典型直方图当前是
Percentile SSTables Write Latency Read Latency Partition Size Cell Count
(micros) (micros) (bytes)
50% 2.00 29.52 152.32 1916 72
75% 3.00 35.43 379.02 24601 770
95% 3.00 51.01 379.02 454826 14237
98% 3.00 61.21 379.02 654949 20501
99% 3.00 73.46 379.02 785939 24601
Min 0.00 14.24 105.78 180 6
Max 3.00 88.15 379.02 1629722 51012
虽然在出现此错误后我没有一个人。
运行Apache Cassandra 3.11.3。 16个节点群集(每个DC中8个节点)。复制为DC1:3,DC2:3(适用于所有用户键空间中的所有表)。驱动程序配置为使用DCAwareRoundRobin,并且所有读取和写入均为LOCAL_QUORUM。应用程序(像我们所有的应用程序一样)都是写的。如果有帮助,请配置STDC。
我们看到写入的超时要少得多,但它们不为零:
com.datastax.driver.core.exceptions.WriteTimeoutException: Cassandra timeout during SIMPLE write query at consistency LOCAL_QUORUM (2 replica were required but only 1 acknowledged the write)
如果这很重要,则此特定应用程序的Akka持久性表就会发生这种情况。
我正在寻找可能的建议,因为我找不到任何东西(而且我没有太多头发可以拔出来...)。
谢谢。
Caused by: com.datastax.driver.core.exceptions.ReadTimeoutException: Cassandra timeout during read query at consistency LOCAL_QUORUM (2 responses were required but only 1 replica responded)
at com.datastax.driver.core.Responses$Error$1.decode(Responses.java:91)
at com.datastax.driver.core.Responses$Error$1.decode(Responses.java:66)
at com.datastax.driver.core.Message$ProtocolDecoder.decode(Message.java:297)
at com.datastax.driver.core.Message$ProtocolDecoder.decode(Message.java:268)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:88)
... 34 common frames omitted
我们有几个使用此集群的应用程序。这不是唯一有错误的应用程序,但我认为通过修复此应用程序,它可以修复其他应用程序。