0 Вопрос: Кассандра 2 против Кассандра 3 записи производительности

вопрос создан в Thu, May 2, 2019 12:00 AM

Я выполняю стресс-тесты 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, как утверждается, имеет улучшенную производительность как для операций чтения, так и для записи.

Однако, только с помощью вставного теста я получаю следующее:

  • Cassandra 2.2.8 с кучей 4G, достигающей 406 потоков с 59 629 операциями в секунду, 33,5 секунды

  • Cassandra 3.9.0 с кучей 4G, достигающей 913 потоков с 37 758 операциями в секунду, 53 секундами (для 406 потоков это 24 976 операций в секунду, 80,1 секунды)

Я испробовал различные комбинации конфигурации версии 3, играя с кучей памяти, настройками gc (как для CMA, так и для G1), пакетированием, ведением журнала, одновременной записью, размерами кеша, сбросом в памяти мемов, trickle fsync. Хотя я заметил некоторые незначительные улучшения, операционные возможности никогда не достигли производительности Cassandra 2. Здесь можно задать похожий вопрос Cassandra v. 3, напишите проблему с производительностью с решением не использовать опцию -XX: + AlwaysPreTouch , которая была добавлена ​​в Cassandra 3. Однако это не оказал никакого влияния в моем случае.

Итак, мой вопрос - возможно ли, что хотя 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
0 ответов                              0                         
источник размещен Вот