我在EC2上有一个单节点cassandra集群。我正在对它进行测试,效果很好。
但是,我必须将此群集移动到VPC,因此我创建了一个包含两个节点(两个种子)的新群集,而不是移动数据,并使用sstableloader
从前一个群集导入数据
我认为它真的很慢,所以决定增加两个实例(不是种子)。它甚至更慢。
我使用ONE一致性,我的复制因子是1,所以我不太明白它为什么这么慢。
为了给你一个想法,我每秒只能读3次。 我们使用EC2Snitch但不使用Cassandra推荐的AMI(我们在安装时没有看到文档中的那部分)。
在添加两个新节点后,我没有在两个第一个节点上运行清理。
当我请求包含十几行的列族的所有元素时,它会超时。如果我要求一个元素,我会在很长一段时间后得到结果,并且使用巨大的跟踪会话(~30000行......)!
有谁知道我能做些什么才能让它更快?我现在还不知道在哪里看。
我的Cassandra版本是Cassandra 2.1.3。 这是我的键空间架构:
CREATE KEYSPACE keyspace_name WITH replication = {'class': 'NetworkTopologyStrategy', 'us-west-2': '1'} AND durable_writes = true;
我们的专栏系列的选项
CREATE TABLE keyspace_name."CFName" (
// ...
) WITH bloom_filter_fp_chance = 0.01
AND caching = '{"keys":"ALL", "rows_per_partition":"NONE"}'
AND comment = ''
AND compaction = {'min_threshold': '4', 'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32'}
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';