cassandra - Cassandra 在读取查询期间以一致性 LOCAL_QUORUM 超时(需要 2 个响应,但只有 1 个副本响应)
问题描述
我们的一个应用程序偶尔会出现错误:
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)。查看 tablehistorgrams,我没有看到任何服务器上针对相关表的读取或写入操作过大。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。应用程序(就像我们所有的应用程序一样)是 write heave。已配置 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
我们有几个使用这个集群的应用程序。这不是唯一有错误的应用程序,但我认为通过修复此应用程序将修复其他应用程序。
解决方案
推荐阅读
- html - 如何编写类似棋盘格的 CSS 网格网站?
- php - Wordpress“无法访问站点”错误,无法访问 FTP 或仪表板
- python - json.decoder.JSONDecodeError:期望':'分隔符:第 1 行第 57358 列(字符 57357)
- java - 如何使条目无效并从咖啡因缓存返回其值?
- c++ - 在 C++ 中编译 sio_client 和 semaphore
- java - Sarxos 网络摄像头库
- flutter - I/颤振(10710):输入“列表”
' 不是类型 'Map 的子类型 ' - swift - 调用中的参数缺少参数,绑定值问题
- kentico - 如何通过在 Kentico 管理工具中构建导入/导出实用程序/功能将 csv 文件数据存储到数据库中?
- ruby-on-rails - Ruby/Faraday:如何翻译和解析响应正文?