我有5项节点在我与环SimpleTopologyStrategy
和replication_factor=3
。 我插使用胁迫具1M行。 当我试图读取该行中cqlsh使用计数
SELECT count(*) FROM Keyspace1.Standard1 limit 1000000;
它失败,错误:
请求未rpc_timeout内完成。
它获取了极限100000甚至500000失败。
我所有的节点都在运行。 我是否需要增加rpc_timeout
?
请帮忙。
因为请求超时在服务器端,你得到这个错误。 每个人都应该知道,这是在卡桑德拉一个非常昂贵的操作,正如其他人指出。
不过,如果你真的想这样做,你应该更新你的/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
这需要很长的时间来阅读在1M行,这样可能是为什么它超时。 你不应该使用count这个样子,这是非常昂贵,因为它必须读取所有数据。 如果你需要计算大量的项目使用Cassandra的计数器。
您也应该检查你的卡珊德拉日志,以确认没有任何其他问题 - 有时在卡桑德拉的异常导致客户端超时。
如果你可以用一个近似的行数过,看看这个答案, 行中的列家庭卡桑德拉的计数 。