什么原因导致Cassandra集群成为读取操作比单节点集群要慢20%?Cassandra读取性能
我建立了一个Cassandra集群,其中有3个节点并测试了读取性能。我使用Cassandra的综合压力测试工具。为了比较,在同一台服务器上有一个单独的节点(单节点群集)。
配置如下: 1具有Cassandra群集(3个节点,v.3.11)+ 1个单节点群集的Hyper-v2服务器,其自身虚拟机上的每个节点(CentOS 7)及其自身的物理SSD驱动器(4个驱动器)。
每个虚拟机都有16GB的RAM,并且可以访问服务器CPU的全部16个逻辑核心。节点之间的网络速度约为500MB/s。 我用1M行执行了READ测试几次并启用了预热。所有默认设置都被使用(包括一致性= 1)。
单节点Cassandra总是比集群(2000 op/s)获得更好的读取性能(约2400 op/s)。 为什么我在多节点群集中看到性能下降?我在集群配置中做错了什么?
CREATE KEYSPACE keyspace1 WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'} AND durable_writes = true;
CREATE TABLE keyspace1.standard1 (
key blob PRIMARY KEY,
"C0" blob,
"C1" blob,
"C2" blob,
"C3" blob,
"C4" blob
) WITH COMPACT STORAGE
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', 'max_threshold': '32', 'min_threshold': '4'}
AND compression = {'enabled': 'false'}
AND crc_check_chance = 1.0
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 = '99PERCENTILE';
测试结果
cassandra-stress read n=1000000 cl=local_one -node IPADDRESS -rate threads=1
Single-node stress test results
Multi-node stress test results
您还可以添加正在测试的表的模式吗? –
嗨,我编辑了我的帖子并添加了密钥空间描述。密钥空间由Cassandra压力测试工具自动创建。 – alex07