什麼原因導致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