【问题标题】:Cassandra:2.2.8:org.apache.cassandra.exceptions.ReadTimeoutException: Operation timed out - received only 0 responsesCassandra:2.2.8:org.apache.cassandra.exceptions.ReadTimeoutException:操作超时 - 仅收到 0 个响应
【发布时间】:2017-06-18 12:14:00
【问题描述】:

我遇到了节点崩溃,其中 system.logfile 显示一堆“ReadTimeoutException”达到 500 毫秒。

cassandra.yaml 文件有 [read_request_timeout_in_ms: 10000] 的设置

请大家分享我如何解决这些超时问题!提前致谢!

错误堆栈:

错误 [SharedPool-Worker-241] 2017-02-01 13:18:27,663 Message.java:611 - 请求期间出现意外异常;频道 = [id: 0x5d8abf33, /172.18.30.62:47580 => /216.12.225.9:9042] java.lang.RuntimeException:org.apache.cassandra.exceptions.ReadTimeoutException:操作超时 - 仅收到 0 个响应。 在 org.apache.cassandra.auth.CassandraRoleManager.getRole(CassandraRoleManager.java:497) ~[apache-cassandra-2.2.8.jar:2.2.8] 在 org.apache.cassandra.auth.CassandraRoleManager.canLogin(CassandraRoleManager.java:306) ~[apache-cassandra-2.2.8.jar:2.2.8] 在 org.apache.cassandra.service.ClientState.login(ClientState.java:269) ~[apache-cassandra-2.2.8.jar:2.2.8] 在 org.apache.cassandra.transport.messages.AuthResponse.execute(AuthResponse.java:79) ~[apache-cassandra-2.2.8.jar:2.2.8] 在 org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:507) [apache-cassandra-2.2.8.jar:2.2.8] 在 org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:401) [apache-cassandra-2.2.8.jar:2.2.8] 在 io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [netty-all-4.0.23.Final.jar:4.0.23.Final] 在 io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [netty-all-4.0.23.Final.jar:4.0.23.Final] 在 io.netty.channel.AbstractChannelHandlerContext.access$700(AbstractChannelHandlerContext.java:32) [netty-all-4.0.23.Final.jar:4.0.23.Final] 在 io.netty.channel.AbstractChannelHandlerContext$8.run(AbstractChannelHandlerContext.java:324) [netty-all-4.0.23.Final.jar:4.0.23.Final] 在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_111] 在 org.apache.cassandra.concurrent.AbstractLocalAwareExecutorService$FutureTask.run(AbstractLocalAwareExecutorService.java:164) [apache-cassandra-2.2.8.jar:2.2.8] 在 org.apache.cassandra.concurrent.SEPWorker.run(SEPWorker.java:105) [apache-cassandra-2.2.8.jar:2.2.8] 在 java.lang.Thread.run(Thread.java:745) [na:1.8.0_111] 原因:org.apache.cassandra.exceptions.ReadTimeoutException:操作超时 - 仅收到 0 个响应。 在 org.apache.cassandra.service.ReadCallback.get(ReadCallback.java:110) ~[apache-cassandra-2.2.8.jar:2.2.8] 在 org.apache.cassandra.service.AbstractReadExecutor.get(AbstractReadExecutor.java:147) ~[apache-cassandra-2.2.8.jar:2.2.8] 在 org.apache.cassandra.service.StorageProxy.fetchRows(StorageProxy.java:1441) ~[apache-cassandra-2.2.8.jar:2.2.8] 在 org.apache.cassandra.service.StorageProxy.readRegular(StorageProxy.java:1365) ~[apache-cassandra-2.2.8.jar:2.2.8] 在 org.apache.cassandra.service.StorageProxy.read(StorageProxy.java:1282) ~[apache-cassandra-2.2.8.jar:2.2.8] 在 org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:224) ~[apache-cassandra-2.2.8.jar:2.2.8] 在 org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:176) ~[apache-cassandra-2.2.8.jar:2.2.8] 在 org.apache.cassandra.auth.CassandraRoleManager.getRoleFromTable(CassandraRoleManager.java:505) ~[apache-cassandra-2.2.8.jar:2.2.8] 在 org.apache.cassandra.auth.CassandraRoleManager.getRole(CassandraRoleManager.java:493) ~[apache-cassandra-2.2.8.jar:2.2.8] ...省略了13个常用框架

INFO [ScheduledTasks:1] 2017-02-01 13:18:27,682 MessagingService.java:946 - READ 消息在过去 5000 毫秒内被丢弃:149 表示内部超时,0 表示跨节点超时 信息 [服务线程] 2017-02-01 13:18:27,693 StatusLogger.java:106 - enterprise.t_sf_venue_test 0,0 INFO [ScheduledTasks:1] 2017-02-01 13:18:27,699 MessagingService.java:946 - REQUEST_RESPONSE 消息在过去 5000 毫秒内被丢弃:7 表示内部超时,0 表示跨节点超时 信息 [服务线程] 2017-02-01 13:18:27,699 StatusLogger.java:106 - enterprise.alestnstats 0,0 INFO [ScheduledTasks:1] 2017-02-01 13:18:27,699 MessagingService.java:946 - RANGE_SLICE 消息在过去 5000 毫秒内被丢弃:116 表示内部超时,0 表示跨节点超时

【问题讨论】:

  • 您能否发布您的查询,以及您希望返回多少行?
  • 你好。感谢您提出我的问题。我正在尝试固定查询,但我想知道为什么当 read_request_timeout_in_ms 为 10000 毫秒时读取超时发生在 5000 毫秒 - 是否有其他拨号来控制这些读取超时?
  • 如果查询超时,通常更多是查询本身的问题,而不是配置问题。但您也可以在驱动程序级别设置该限制。

标签: cassandra


【解决方案1】:

正如您在日志中看到的,实际上失败的查询并不是您要执行的查询。

failing query 是 cassandra 内部的:

"SELECT * FROM system_auth.roles;"

这些内部 cassandra 查询(杂项查询)不使用“read_request_timeout_in_ms”。相反,它使用“request_timeout_in_ms”。

【讨论】:

  • 谢谢你..你的回复确实很有帮助,我对这个其他参数有了更多的了解
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-29
  • 1970-01-01
  • 2018-12-25
  • 2016-11-08
  • 2015-05-26
  • 2017-08-31
相关资源
最近更新 更多