Как правильно использовать Cassandra-Stress Tool в режиме профиля пользователя? - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь протестировать свои 3 узла кластера Cassandra (3.11.3.5), используя cassandra-стресс.В настоящее время я использую 3 узла и 1 машину, на которой работает cassandra-tool, все в сети openvpn.

Я создал свой тестовый файл профиля пользователя .yaml, здесь:

### DML ###

# Keyspace Name
keyspace: mykeyspace

# The CQL for creating a keyspace (optional if it already exists)
keyspace_definition: |
  CREATE KEYSPACE mykeyspace WITH replication = {'class': 'NetworkTopologyStrategy', 'DC1': '2'}  AND durable_writes = false;

# Table name
table: mytable

# The CQL for creating a table you wish to stress (optional if it already exists)
table_definition: |
  CREATE TABLE mytable (
    id bigint, 
    type int,
    txt text,
    event_datetime timestamp,
    bigtxt text,    
    page int,
    PRIMARY KEY ((id, type), page, event_datetime)
  ) WITH CLUSTERING ORDER BY (page DESC, event_datetime DESC)
    AND bloom_filter_fp_chance = 0.01
    AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
    AND comment = 'ciao'
    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 = 90000
    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';

### Column Distribution Specifications ###

columnspec:
  - name: id
    size: gaussian(1..1000)       
    population: gaussian(1..500k)  

  - name: type
    size: gaussian(0..5)
    population: gaussian(1..5)

  - name: event_datetime
    cluster: fixed(1)         

  - name: page                  
    size: ~exp(1..20)
    population: ~exp(1..20)
    cluster: fixed(1)

  - name: txt
    size: exp(30..1k)

  - name: bigtxt
    size: gaussian(10k..30M)    


### Batch Ratio Distribution Specifications ###

insert:
  partitions: fixed(1)            # Our partition key is the domain so only insert one per batch

  select:    fixed(1)/1        

  batchtype: UNLOGGED             # Unlogged batches

queries:
   pages:
      cql: select id, page, type, txt, event_datetime, bigtxt from mytable where id = ? and type = ? and page=? limit 10;
      fields: multirow

Команды, которые я выполняю до сих пор, являются модификацией этой команды:

cassandra-stress user n=30 profile=./myprofile.yml ops\(insert=1\) -rate threads=10 -node 10.5.0.1,10.5.0.6,10.5.0.8

что я изменил:

  • n
  • количество потоков
  • используется дроссель
  • используется исправлено

, и я всегда получаю некоторые ошибки, такие как:

com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: 10.5.0.1/10.5.0.1:9042 (com.datastax.driver.core.exceptions.OperationTimedOutException: [10.5.0.1/10.5.0.1] Timed out waiting for server response), 10.5.0.6/10.5.0.6:9042 (com.datastax.driver.core.exceptions.OperationTimedOutException: [10.5.0.6/10.5.0.6] Timed out waiting for server response), 10.5.0.8/10.5.0.8:9042 (com.datastax.driver.core.exceptions.OperationTimedOutException: [10.5.0.8/10.5.0.8] Timed out waiting for server response))

Я получаю эти ошибки также на этапе прогрева.

И результаты запуска выглядят примерно так:

Results:
Op rate                   :        0 op/s  [insert: 1 op/s]
Partition rate            :        0 pk/s  [insert: 1 pk/s]
Row rate                  :        2 row/s [insert: 3 row/s]
Latency mean              : 38172.3 ms [insert: 38,172.3 ms]
Latency median            : 37279.0 ms [insert: 37,279.0 ms]
Latency 95th percentile   : 59190.0 ms [insert: 59,190.0 ms]
Latency 99th percentile   : 59458.5 ms [insert: 59,458.5 ms]
Latency 99.9th percentile : 59458.5 ms [insert: 59,458.5 ms]
Latency max               : 59458.5 ms [insert: 59,458.5 ms]
Total partitions          :         30 [insert: 30]
Total errors              :          0 [insert: 0]
Total GC count            : 2
Total GC memory           : 3.396 GiB
Total GC time             :    0.2 seconds
Avg GC time               :  117.0 ms
StdDev GC time            :    0.0 ms
Total operation time      : 00:01:04

Что я не могу понять:

  1. , почему время ожидания полностью отличается от того, что я получаюесли я запускаю nodetool cfhistograms mykeyspace mytable на узлах?на узлах я получаю что-то вроде 200 мс с задержкой 99% для записи.Может быть связано со временем, которое инструмент-кассанда тратит на отправку МБ данных координатору?

  2. почему я не вижу каких-либо эффектов при изменении переключателя газа / фиксированной скорости в кассандре-тул команда?Я всегда получаю 1 оп / с

  3. почему я получаю предыдущие ошибки так часто, если у меня есть производственный кластер, такой как тестовый, который не имеет этих ошибок, даже если онполучает гораздо более тяжелую смешанную нагрузку (600 000 операций чтения и 1 М записи в течение примерно 3 часов)?

1 Ответ

0 голосов
/ 01 июля 2019

Я знаю, что это старый поток, но:

Я также настраиваю кластер Cassandra и получаю некоторые головные боли в процессе.

Для создания своего профиля я использовал эта ссылка .

Об Исключении, которое вы получите, если я прав, инструменту cassandra-стресс не удалось подключиться ни к одному из узлов в вашем кластере.

На что посмотреть:

  • В файле cassandra.yaml, есть ли у конфигурации start_native_transport значение true?
  • Все еще в cassandra.yamlфайл, вы установили конфигурации listen_address или listen_interface на нужные IP-адреса?По умолчанию 127.0.0.1
  • У вас есть какая-либо конфигурация брандмауэра, запрещающая доступ к порту 9042?

Это были некоторые вещи, которые мне пришлось изменить, чтобы иметь возможность удаленного подключения.Я надеюсь, что это может помочь.

...