Кассандра 2 против Кассандра 3 записи производительности - PullRequest
0 голосов
/ 02 мая 2019

Я выполняю стресс-тесты 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. Однако это не оказало никакого влияния в моем случае.

Поэтому мой вопрос - возможно ли, что хотя Cassandra3 имеет (в соответствии с официальными примечаниями, а также его пользователями) в целом лучшую производительность, чем версия 2, это утверждение относится только к установке с несколькими узлами, а не к одному узлу (поэтому в обработке между узлами произошли значительные улучшения)?

Мой стресс-тест cassandra:

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

Спасибо за любой совет / мнение / поделился опытом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...