RPC timeout in cqlsh - Cassandra



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

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

出错:

请求未在rpc_timeout内完成。

它获取100000的限制。500000甚至失败
所有的节点都在上面。是否需要增加rpc_timeout

请帮。

您得到这个错误是因为请求在服务器端超时了。人们应该知道,正如其他人指出的那样,在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

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

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

如果您可以接受一个大致的行数,请看看Cassandra中列族的行数

最新更新