在Cassandra中使用计数器时的可怕读取延迟(超时)

在Cassandra中使用计数器时的可怕读取延迟(超时),cassandra,Cassandra,我的Cassandra集群(2个节点)在我从具有计数器和按分区键筛选的表中选择时总是超时 cqlsh:test> select count(*) from costs_by_domain_and_format; count ------- 2231 所以,里面几乎没有数据(2K行)。当我询问时: cqlsh:test> select * from costs_by_domain_and_format where flight_id=6f0753b5-858d-44a0-a321-

我的Cassandra集群(2个节点)在我从具有计数器和按分区键筛选的表中选择时总是超时

cqlsh:test> select count(*) from costs_by_domain_and_format;

count
-------
2231
所以,里面几乎没有数据(2K行)。当我询问时:

cqlsh:test> select * from costs_by_domain_and_format where flight_id=6f0753b5-858d-44a0-a321-ce4f5869f58f;
Request did not complete within rpc_timeout.
它总是超时。当我启用跟踪时,似乎是在合并memtables和sstables中的数据时发生的:

Merging data from memtables and 4 sstables | 10:16:17,907 | xx.xx.xx.xx |           5600
Timed out; received 0 of 1 responses | 10:16:27,906 | xx.xx.xx.xx |       10004599
在没有WHERE子句的情况下查询此表没有问题,例如:

select * from costs_by_domain_and_format;
表结构如下所示:

CREATE TABLE costs_by_domain_and_format (
  flight_id uuid,
  domain text,
  span_date timestamp,
  format text,
  cost counter,
  counter counter,
  PRIMARY KEY (flight_id, domain, span_date, format)
) WITH
 bloom_filter_fp_chance=0.010000 AND
 caching='KEYS_ONLY' AND
 comment='' AND
 dclocal_read_repair_chance=0.000000 AND
 gc_grace_seconds=864000 AND
 read_repair_chance=0.100000 AND
 replicate_on_write='true' AND
 populate_io_cache_on_flush='false' AND
 compaction={'class': 'SizeTieredCompactionStrategy'} AND
 compression={'sstable_compression': 'SnappyCompressor'};

这个问题的根源在哪里?这是对柜台的不当使用吗?或者可能是不正确的桌子设计?或者这可能是Cassandra(我使用的是v1.2.10)中的某个已知问题?

请检查Cassandra服务器日志,查看是否有任何节点由于该查询而记录错误或警告。看起来真正的问题与中相同,解决方案是调用nodetool invalidatekeycache