高读延迟在卡桑德拉
我使用三台机器各自具有32 GB的RAM和4芯(在亚马逊AWS)高读延迟在卡桑德拉
我使用卡桑德拉的所有默认配置的集群上卡桑德拉2.1.12。
我使用它为我的网站事件分析具有约每天1 GB的数据有3
我的数据的replcation因子(时间序列数据)已发展到约85 GB每台机器现在是给上读取延迟大约4.5 s (4000 ms)
我的行很少更新所以,我没有使用LevelOrder Compaction。 而我写与编辑的周围.03ms
延迟表现良好:
这是ColumnFamily中的定义:
CREATE TABLE TimeSeriesData(
logyear int,
logmonth int,
logdate int,
logdatetime timestamp,
cookie text,
sessionid text,
...
PRIMARY KEY (logyear, logmonth, logdate, logdatetime, cookie)
) WITH CLUSTERING ORDER BY (logmonth ASC, logdate ASC, logdatetime ASC, cookie ASC)
AND bloom_filter_fp_chance = 0.01
AND caching = '{"keys":"ALL", "rows_per_partition":"NONE"}'
AND comment = ''
AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy'}
AND compression = {'sstable_compression': 'org.apache.cassandra.io.compress.LZ4Compressor'}
AND dclocal_read_repair_chance = 0.1
AND default_time_to_live = 0
AND gc_grace_seconds = 864000
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';
展望由当前正在logyear我的分区键。所以,我的整个数据将在一个分区中。话虽如此,分区器负责在集群中的节点之间分配(通过分区键)行的组。
在这种情况下,它会是一个sinlge节点或不是?
此外,尽管读取单个分区的数据,为什么读取延迟非常差?
单个SSTable可以有多个分区,反之亦然?我正在使用org.apache.cassandra.dht.RandomPartitioner
。
Moverover,如上所述应该是列族的空闲分区密钥,每天增量数据为1GB。
您发布了您认为是单个问题的内容,但它可能涉及更多 - 潜在的许多不同问题,都表现为高延迟。
最有可能的解释是由于数据模型不佳导致高垃圾回收。但是,你已经给我们很少的继续。
看看nodetool cfstats
- cfstats中的延迟是否与您看到的延迟相匹配?什么是最大分区大小?
如果这是一个高垃圾收集的问题,那么我认为我的写作也会受到影响,但他们不是。 – deenbandhu
我的CF统计现在显示的约23481毫秒 \t \t压实分区最小字节读取延迟:43388629个 \t \t压实分区最大字节数:158683580810个 \t \t压实分区意味着字节:19049359054 – deenbandhu
你有一个破碎的数据模型 - 这些分区大小是不合理的,坦率地说,我感到震惊,你可以阅读任何东西。 –
请添加一致性级别和追踪转储。它可能会帮助其他人 –
我已添加更多详细信息。你可以请看看它。 – deenbandhu