RPC超时 - 卡桑德拉

问题描述:

我有我的戒指5个节点与SimpleTopologyStrategyreplication_factor=3。我使用压力工具插入了1M行。当我尝试使用RPC超时 - 卡桑德拉

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

读取行数在cqlsh它失败,错误:

Request did not complete within rpc_timeout.

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

请帮忙。

+0

因为有些人我是谁,因为他们想要做了转发这个帖子给我的工作,我觉得有必要一提的是**增加查询超时在生产集群中是一个可怕的,可怕的想法。** – Aaron 2018-02-14 14:01:15

需要很长时间来读取1M​​行,这可能是为什么它超时。您不应该使用这样的计数,因为它必须读取所有数据,所以它非常昂贵。如果您需要计算大量物品,请使用卡桑德拉计数器。

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

如果你可以用一个近似的行数过,看看这个答案Row count of a column family in Cassandra

您收到此错误是因为服务器端的请求超时。人们应该知道,在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