RPC超时在cqlsh - 卡桑德拉(RPC timeout in cqlsh - Cassand

2019-07-21 01:22发布

我有5项节点在我与环SimpleTopologyStrategyreplication_factor=3 。 我插使用胁迫具1M行。 当我试图读取该行中cqlsh使用计数

SELECT  count(*) FROM  Keyspace1.Standard1 limit 1000000;

它失败,错误:

请求未rpc_timeout内完成。

它获取了极限100000甚至500000失败。
我所有的节点都在运行。 我是否需要增加rpc_timeout

请帮忙。

Answer 1:

因为请求超时在服务器端,你得到这个错误。 每个人都应该知道,这是在卡桑德拉一个非常昂贵的操作,正如其他人指出。

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

例如设定为40秒的超时:

range_request_timeout_in_ms: 40000

你可能会在客户端调整为好。 当使用cqlsh作为客户端,这是通过创建/更新下为cqlsh您的配置文件来完成~/.cassandra/cqlshrc和添加client_timeout参数的connection部分。

例如设定为40秒的超时:

[connection]
client_timeout=40


Answer 2:

这需要很长的时间来阅读在1M行,这样可能是为什么它超时。 你不应该使用count这个样子,这是非常昂贵,因为它必须读取所有数据。 如果你需要计算大量的项目使用Cassandra的计数器。

您也应该检查你的卡珊德拉日志,以确认没有任何其他问题 - 有时在卡桑德拉的异常导致客户端超时。



Answer 3:

如果你可以用一个近似的行数过,看看这个答案, 行中的列家庭卡桑德拉的计数 。



文章来源: RPC timeout in cqlsh - Cassandra