我有5个节点在我的环与SimpleTopologyStrategy
和replication_factor=3
。我使用压力工具插入1M行。当我尝试使用
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中列族的行数