多节点 cassandra 集群真的很慢

Multiple node cassandra cluster is really slow

我在 EC2 上有一个单节点 cassandra 集群。我正在 运行 对其进行测试,效果很好。

但是,我不得不将这个集群移动到 VPC,所以我没有移动数据,而是创建了一个有两个节点(都是种子)的新集群,并使用 [=12 从前一个集群导入数据=].

我认为它真的很慢,所以决定再添加两个实例(不是种子)。甚至更慢。

我使用的是 ONE 一致性,我的复制因子是 1,所以我不太明白为什么这么慢。

给你一个想法,我每秒只能读取 3 次。 我们使用 EC2Snitch,但没有使用 Cassandra 推荐的 AMI(我们在安装它时没有在文档中看到该部分)。

添加两个新节点后,我还没有运行清理前两个节点。

当我请求仅包含十几行的列族的所有元素时,它超时。如果我请求 one 元素,我会在很长一段时间后得到结果,并且有一个 巨大的跟踪会话 (~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';

我不得不 运行 在我的节点上进行压缩,因为我有 too many tombstones

非常感谢 freenode #cassandra 上令人惊叹的 IRC 频道。