卡桑德拉超时

时间:2016-12-22 20:18:34

标签: cassandra cassandra-2.0 spring-data-cassandra

这是我的Cassndra表

SET FOREIGN_KEY_CHECKS=0

我有6个节点的Cassandra集群

当我尝试使用Java Driver获取以下READ查询时,

CREATE TABLE ipaddresss (
    ipAddress text,
    time timestamp,
    clientId inet,
    ..
    ..
    ..
    PRIMARY KEY (ipAddress, time, clientId)
) WITH CLUSTERING ORDER BY (time DESC, clientId ASC)

我经常收到com.datastax.driver.core.exceptions.ReadTimeoutException:在一致性ONE的读取查询期间出现Cassandra超时(需要1个响应但只响应0个副本)。我大部分时间都得到了答案,但即使系统没有负载,仍然会有很多超时。

结果集最多有1000行,因此设置Fetchsize没有帮助

1 个答案:

答案 0 :(得分:0)

好奇,但每个ipAddress分区中存储了多少CQL行?每行的列数也会增加结果集的大小。尝试从cqlsh查询,看看你是否仍然收到超时。否则,尝试通过查询该分区内的有限时间范围来限制结果集。

示例:

select * from ipaddresss where ipAddress = '12.45.67.89' 
  AND time >= '2016-11-21 00:00' and time < '2016-11-21 04:00';

否则,Spring Data Cassandra本身可能会导致您的问题。在通过大型结果集进行分页时,Spring Data Cassandra在幕后执行(非常低效)SELECT COUNT(*)。如果您可以在Spring-Data-Cassandra之外使用此查询,那么这可能是您的问题。如果有疑问,您应该始终使用DataStax认可的驱动程序,而Spring-Data-Cassandra则不然。