【问题标题】:RPC timeout in cqlsh - Cassandracqlsh 中的 RPC 超时 - Cassandra
【发布时间】:2013-02-20 17:59:15
【问题描述】:

我的环中有 5 个节点,SimpleTopologyStrategyreplication_factor=3。我使用压力工具插入了 1M 行。当我尝试使用

读取 cqlsh 中的行数时
SELECT  count(*) FROM  Keyspace1.Standard1 limit 1000000;

失败并出现错误:

请求未在 rpc_timeout 内完成。

它获取限制 100000。即使 500000 也失败。
我的所有节点都已启动。我需要增加rpc_timeout吗?

请帮忙。

【问题讨论】:

  • 由于与我一起工作的人将这篇文章作为他们想做的事情转发给我,我不得不提一下 增加生产集群中的查询超时是一件非常糟糕的事情想法。

标签: cassandra timeout cql


【解决方案1】:

您收到此错误是因为请求在服务器端超时。应该知道,正如其他人所指出的,这在 Cassandra 中是一项非常昂贵的操作。

不过,如果您真的想这样做,您应该更新您的/etc/cassandra/cassandra.yaml 文件并更改range_request_timeout_in_ms 参数。这将适用于您的所有范围查询。

设置 40 秒超时的示例:

range_request_timeout_in_ms: 40000

您可能还必须在客户端进行调整。当使用cqlsh 作为客户端时,这是通过在~/.cassandra/cqlshrc 下创建/更新cqlsh 的配置文件并将client_timeout 参数添加到connection 部分来完成的。

设置 40 秒超时的示例:

[connection]
client_timeout=40

【讨论】:

    【解决方案2】:

    读取 1M 行需要很长时间,所以这可能是它超时的原因。您不应该像这样使用 count ,它非常昂贵,因为它必须读取所有数据。如果您需要计算大量项目,请使用 Cassandra 计数器。

    您还应该检查您的 Cassandra 日志以确认没有任何其他问题 - 有时 Cassandra 中的异常会导致客户端超时。

    【讨论】:

      【解决方案3】:

      如果您可以接受大致的行数,请查看Row count of a column family in Cassandra 的答案。

      【讨论】:

        猜你喜欢
        • 2014-09-13
        • 2015-08-25
        • 2015-08-11
        • 2017-08-21
        • 2015-06-08
        • 1970-01-01
        • 2013-12-19
        • 2020-10-05
        • 2017-02-18
        相关资源
        最近更新 更多