当前位置: 首页 > 知识库问答 >
问题:

org.apache.cassandra.exceptions。ReadTimeoutException:操作超时-仅收到0个响应

隆选
2023-03-14

我的Cassandra Java客户端出现了以下错误。

java.util.concurrent.ExecutionException: org.springframework.cassandra.support.exception.CassandraConnectionFailureException: [DNS/IP:PORT] Connection has been closed; nested exception is com.datastax.driver.core.exceptions.TransportException: [DNS/IP:PORT] Connection has been closed
    at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)
    at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1895)

同时,Cassandra日志中的错误如下。

ERROR [Native-Transport-Requests-37] 2022-07-19 09:11:38,152 ErrorMessage.java:384 - Unexpected exception during request
com.google.common.util.concurrent.UncheckedExecutionException: java.lang.RuntimeException: org.apache.cassandra.exceptions.ReadTimeoutException: Operation timed out - received only 0 responses.
        at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2203) ~[guava-18.0.jar:na]
        at com.google.common.cache.LocalCache.get(LocalCache.java:3937) ~[guava-18.0.jar:na]
        at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3941) ~[guava-18.0.jar:na]
        at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4824) ~[guava-18.0.jar:na]
        at org.apache.cassandra.auth.AuthCache.get(AuthCache.java:108) ~[apache-cassandra-3.11.2.jar:3.11.2]
        at org.apache.cassandra.auth.PermissionsCache.getPermissions(PermissionsCache.java:45) ~[apache-cassandra-3.11.2.jar:3.11.2]
        at org.apache.cassandra.auth.AuthenticatedUser.getPermissions(AuthenticatedUser.java:104) ~[apache-cassandra-3.11.2.jar:3.11.2]
        at org.apache.cassandra.service.ClientState.authorize(ClientState.java:439) ~[apache-cassandra-3.11.2.jar:3.11.2]
        at org.apache.cassandra.service.ClientState.checkPermissionOnResourceChain(ClientState.java:368) ~[apache-cassandra-3.11.2.jar:3.11.2]
        at org.apache.cassandra.service.ClientState.ensureHasPermission(ClientState.java:345) ~[apache-cassandra-3.11.2.jar:3.11.2]
        at org.apache.cassandra.service.ClientState.hasAccess(ClientState.java:332) ~[apache-cassandra-3.11.2.jar:3.11.2]
        at org.apache.cassandra.service.ClientState.hasColumnFamilyAccess(ClientState.java:310) ~[apache-cassandra-3.11.2.jar:3.11.2]
        at org.apache.cassandra.cql3.statements.ModificationStatement.checkAccess(ModificationStatement.java:211) ~[apache-cassandra-3.11.2.jar:3.11.2]
        at org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:221) ~[apache-cassandra-3.11.2.jar:3.11.2]
        at org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:255) ~[apache-cassandra-3.11.2.jar:3.11.2]
        at org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:240) ~[apache-cassandra-3.11.2.jar:3.11.2]
        at org.apache.cassandra.transport.messages.QueryMessage.execute(QueryMessage.java:116) ~[apache-cassandra-3.11.2.jar:3.11.2]


除了CPU IO等待(下面的红色尖峰),一切(CPU使用/内存使用/每分钟读取查询计数等)看起来都很正常。当时没有运行压缩任务。

我在网上查看了多篇文章,问题和错误报告,但找不到任何令人信服的解决方案。类似的问题: 卡桑德拉:2.2.8:组织.apache.卡桑德拉.exceptions.读取超时异常:操作超时 - 仅收到 0 个响应

错误时间 - 上午 9:11 GC 活动在当时是正常的。GC活动在上午8:20异常。

这是一个虚拟机,邻居/兄弟姐妹没有得到充分利用。

关于我应该寻找什么有什么建议吗?

共有1个答案

曹均
2023-03-14

堆栈跟踪的这一部分向我指示在尝试检查身份验证缓存中的用户权限时请求失败:

    ...
    at org.apache.cassandra.auth.AuthCache.get(AuthCache.java:108) ~[apache-cassandra-3.11.2.jar:3.11.2]
    at org.apache.cassandra.auth.PermissionsCache.getPermissions(PermissionsCache.java:45) ~[apache-cassandra-3.11.2.jar:3.11.2]
    at org.apache.cassandra.auth.AuthenticatedUser.getPermissions(AuthenticatedUser.java:104) ~[apache-cassandra-3.11.2.jar:3.11.2]
    ...

它实际上是在检查本地缓存,所以它应该非常快。我唯一一次看到身份验证缓存查找超时是当节点过载时,因此它们无响应。

检查长GC或多次出现短GC,这会导致长暂停时间。如果节点是虚拟机,请确保没有“噪音邻居”从节点窃取CPU周期。干杯

 类似资料:
  • 当我试图从.cql文件插入大量数据时。我得到了下面提到的错误。 我该怎么办?我还在cassandra.yaml中增加了write_request_timeout_in_ms 我的卡桑德拉版本是3.9和蟒蛇 - 2.7 请任何人帮助我解决这个问题!感谢任何回答

  • 我正在经历节点崩溃,system.logfile显示一堆'ReadTimeoutException'达到500毫秒。 卡桑德拉.yaml 文件具有 [read_request_timeout_in_ms: 10000] 的设置 你们能分享一下我如何解决这些超时问题吗?提前感谢! 错误[shared pool-Worker-241]2017-02-01 13:18:27,663 Message.ja

  • 我正试图使用IBM Type 4 JDBC驱动程序连接到远程DB2。这是我的配置: 服务器: Windows 7 professional DB2 LUW V10.5 DB2 SVCENAME=50000 TCP/IP通信 客户: 苹果操作系统V10.10.3 我的理解是,如果您用Java编写客户端应用程序并使用类型4-纯Java-驱动程序,客户端不必安装客户端。该应用程序将使用DRDA直接连接到

  • 我有一个提供REST API的Grails 4应用程序。其中一个endpoint有时会出现以下异常而失败: endpoint使用micronaut http客户端调用其他系统。远程系统需要很长时间才能响应,导致ReadTimeOutException。 以下是调用远程服务的代码: 我尝试在application.yml中使用以下配置解决它: 和 ...没有成功。尽管我进行了配置,但在调用endpo

  • 我有一个更新应用程序通知状态的操作。通常,此通知将是一个错误或某种类型的信息。然后我需要在5秒后发送另一个动作,它将通知状态返回到初始状态,所以没有通知。这背后的主要原因是提供通知在5秒后自动消失的功能。 我没有使用并返回另一个操作,也找不到这是如何在网上完成的。所以欢迎任何建议。

  • 操作超时 - 仅收到 0 个响应“,信息:”表示来自服务器的错误消息“,代码:4608,一致性:1,已接收:0,阻止:1,isData 呈现:0,... 我每天尝试在我的cassandra集群上执行SELECT查询时都会遇到几次这样的错误。我们在m1.large aws实例上有一个3节点集群。他们大多数时候都能成功,但我们偶尔会遇到上述错误。我们还没有生产,所以所有的桌子都很小。我们没有超过几千行