Cassandra 2与Cassandra 3的写入性能

时间:2019-05-02 15:14:12

标签: cassandra

我正在运行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

感谢您的任何建议/意见/分享的经验。

0 个答案:

没有答案