Cassandra DateTieredCompactionStrategy SSTables

时间:2016-01-20 04:13:19

标签: performance cassandra timeout

我们正在运行Cassandra 2.2.3。

使用DateTieredCompactionStrategy建立一个列族,如下所示,

CREATE TABLE test (
     num_id text,
     position_time timestamp,
     acc int,
     coordinate text,
     device_no text,
     PRIMARY KEY (num_id, position_time, coordinate)
 ) WITH CLUSTERING ORDER BY (position_time DESC, coordinate ASC)
     AND bloom_filter_fp_chance = 0.01
     AND caching = '{"keys":"ALL", "rows_per_partition":"NONE"}'
     AND comment = 'table for gps points from car gps source.'
     AND compaction = {'timestamp_resolution': 'MILLISECONDS', 'max_sstable_age_days': '8', 'base_time_seconds': '3600', 'class': 'org.apache.cassandra.db.compaction.DateTieredCompactionStrategy'}
     AND compression = {'chunk_length_kb': '64', 'crc_check_chance': '1.0', 'sstable_compression': 'org.apache.cassandra.io.compress.SnappyCompressor'}
     AND dclocal_read_repair_chance = 0.1
     AND default_time_to_live = 0
     AND gc_grace_seconds = 86400
     AND max_index_interval = 2048
     AND memtable_flush_period_in_ms = 0
     AND min_index_interval = 128
     AND read_repair_chance = 0.0
     AND speculative_retry = '99.0PERCENTILE';

我们确实有一些流量,它会一直插入表格。

Cassandra产生了许多SStables,总共约2,000个。 例如,

-rw-r--r-- 1 cassandra cassandra   86M Jan 20 02:59 la-11110-big-Data.db
-rw-r--r-- 1 cassandra cassandra  111M Jan 20 03:11 la-11124-big-Data.db
-rw-r--r-- 1 cassandra cassandra  176M Jan 20 03:12 la-11125-big-Data.db
-rw-r--r-- 1 cassandra cassandra  104M Jan 20 03:14 la-11130-big-Data.db
-rw-r--r-- 1 cassandra cassandra  102M Jan 20 03:26 la-11144-big-Data.db
-rw-r--r-- 1 cassandra cassandra  172M Jan 20 03:26 la-11145-big-Data.db
-rw-r--r-- 1 cassandra cassandra  107M Jan 20 03:30 la-11149-big-Data.db
-rw-r--r-- 1 cassandra cassandra   96M Jan 20 03:41 la-11163-big-Data.db
-rw-r--r-- 1 cassandra cassandra  176M Jan 20 03:41 la-11164-big-Data.db
-rw-r--r-- 1 cassandra cassandra   97M Jan 20 03:45 la-11169-big-Data.db
-rw-r--r-- 1 cassandra cassandra   82M Jan 20 03:57 la-11183-big-Data.db
-rw-r--r-- 1 cassandra cassandra  194M Jan 20 03:58 la-11184-big-Data.db
-rw-r--r-- 1 cassandra cassandra   28M Jan 20 03:59 la-11187-big-Data.db
-rw-r--r-- 1 cassandra cassandra   90M Jan 20 04:00 la-11188-big-Data.db

我的问题是,拥有如此多的SStables(2000)是否正常?

另一件事是我们遇到了readtimeout选择查询的异常。 选择查询使用主键num_id和群集键timestampreadtimeout设置为10秒。

那么,另一个问题是readtimeout异常是由许多SStables还是宽行造成的?如何解决这个例外?

2 个答案:

答案 0 :(得分:2)

  

我的问题是,拥有如此多的SStables(2000)是否正常?

不,这不正常。我认为在你的情况下,压缩速度不够快,无法跟上摄取率。您对Cassandra服务器有什么样的硬盘驱动器?旋转盘? SSD?共享存储?

  

那么,另一个问题是readtimeout异常是由很多SStables还是宽行引起的?

它可以是两者,但在您的情况下,我非常确定它与大量的SSTable相关

  

如何解决这个例外?

检查您的磁盘I / O是否可以跟上。使用 dstat iostat Linux工具来监控I / O

答案 1 :(得分:2)

问题是“'timestamp_resolution':'MILLISECONDS'”我已提交https://issues.apache.org/jira/browse/CASSANDRA-11041来改进有关此参数的文档