RPC超时 - 卡桑德拉
问题描述:
我有我的戒指5个节点与SimpleTopologyStrategy
和replication_factor=3
。我使用压力工具插入了1M行。当我尝试使用RPC超时 - 卡桑德拉
SELECT count(*) FROM Keyspace1.Standard1 limit 1000000;
读取行数在cqlsh它失败,错误:
Request did not complete within rpc_timeout.
它获取了极限100000失败甚至500000
我所有的节点都在运行。我需要增加rpc_timeout
吗?
请帮忙。
答
需要很长时间来读取1M行,这可能是为什么它超时。您不应该使用这样的计数,因为它必须读取所有数据,所以它非常昂贵。如果您需要计算大量物品,请使用卡桑德拉计数器。
您也应该检查你的卡珊德拉日志,以确认没有任何其他问题 - 有时在卡桑德拉的异常导致客户端超时。
答
您收到此错误是因为服务器端的请求超时。人们应该知道,在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
因为有些人我是谁,因为他们想要做了转发这个帖子给我的工作,我觉得有必要一提的是**增加查询超时在生产集群中是一个可怕的,可怕的想法。** – Aaron 2018-02-14 14:01:15