我正在运行cassandra压力测试,以仅使用单个节点比较Cassandra 2与Cassandra 3的性能。我知道,Cassandra实际上并不打算用于单节点安装,例如这里https://grokbase.com/t/cassandra/user/161pp4x7gr/production-with-single-node所讨论的。我的观点是,即使在单个节点上对Cassandra 2和3进行基准测试时,我也希望Cassandra 3会比Cassandra 2产生更好的结果,因为版本3声称在读取和写入操作方面都有改进的性能。
但是,仅通过插入测试,我得到以下信息:
具有4G堆的Cassandra 2.2.8以59,629 op / s,33.5秒达到406个线程
具有4G堆的Cassandra 3.9.0达到913个线程,运行速度为37,758 op / s,53秒(使用406个线程则为24,976 op / s,80.1秒)
我尝试了版本3配置的各种组合,使用堆内存,gc设置(适用于CMA和G1),批处理,日志记录,并发写入,高速缓存大小,内存表刷新,trick流fsync。尽管我注意到了一些细微的增强,但操作性能却从未达到Cassandra 2的性能。这里Cassandra v. 3, write performance issue提出了类似的问题,即不使用 -XX:+ AlwaysPreTouch 的解决方案在Cassandra 3中添加的em>选项。但是,这对我的情况没有任何影响。
所以我的问题是-是否有可能,尽管Cassandra 3(根据官方说明及其用户)总体上具有比版本2更好的性能,但该语句仅适用于多节点安装,不适用于一个节点(因此节点间处理有了显着增强)?
我的卡桑德拉压力测试:
keyspace: test
keyspace_definition: |
CREATE KEYSPACE test WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'};
table: elementstore
columnspec:
- name: key
size: fixed(3)
population: uniform(1..100)
- name: value
size: fixed(8)
population: uniform(1..100)
insert:
partitions: fixed(1)
batchtype: UNLOGGED
select: fixed(10)/10
elementstore表已经是商店的一部分,其描述为:
CREATE TABLE test.elementstore (
key blob,
column1 blob,
value blob,
PRIMARY KEY (key, column1)
) WITH COMPACT STORAGE
AND CLUSTERING ORDER BY (column1 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', 'max_threshold': '32', 'min_threshold': '4'}
AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
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';
我要插入2,000,000条记录
cassandra-stress user profile=file:../specification.yaml ops(insert=1) n=2000000
感谢您的任何建议/意见/分享的经验。