2016-08-03 10 views
1

YCSB Endpoint benchmark хотел бы, чтобы вы считали, что Кассандра является золотым ребенком баз данных Nosql. Однако, воссоздавая результаты в наших собственных ящиках (8 ядер с гиперпотоком, память объемом 60 ГБ, SSD на 2500 Гбайт), мы имеем печальную пропускную способность для рабочей нагрузки b (читаем в основном, ака 95% читаем, обновление 5%).YCSB с низкой пропускной способностью cassandra

Настройки cassandra.yaml точно такие же, как и параметры конечной точки, запрещающие различные IP-адреса и конфигурацию нашего диска (1 SSD для данных, 1 для журнала фиксации). Хотя их пропускная способность составляет ~ 38 000 операций в секунду, наша составляет ~ 16 000 независимо (относительно) от потоков/количества клиентских узлов. То есть один рабочий узел с 256 потоками будет сообщать ~ 16 000 оп/сек, а 4 узла будут каждый отчет ~ 4000 операций/сек.

Я установил значение readahead в 8 КБ для накопителя данных SSD. Я поставлю файл рабочей нагрузки ниже.

При анализе дискового io & использования процессора с iostat кажется, что пропускная способность чтения составляет ~ 200 000 КБ/с, что, по-видимому, предполагает, что пропускная способность кластера ycsb должна быть выше (записи составляют 100 байт). ~ 25-30% от процессора, похоже, находится на уровне% iowait, 10-25% используется пользователем.

top и nload stats не являются, по-видимому, узким местом (< 50% использования памяти и 10-50 Мбит/с для ссылки 10 Гбит/с).

# The name of the workload class to use 
workload=com.yahoo.ycsb.workloads.CoreWorkload 

# There is no default setting for recordcount but it is 
# required to be set. 
# The number of records in the table to be inserted in 
# the load phase or the number of records already in the 
# table before the run phase. 
recordcount=2000000000 

# There is no default setting for operationcount but it is 
# required to be set. 
# The number of operations to use during the run phase. 
operationcount=9000000 

# The offset of the first insertion 
insertstart=0 
insertcount=500000000 

core_workload_insertion_retry_limit = 10 
core_workload_insertion_retry_interval = 1 

# The number of fields in a record 
fieldcount=10 

# The size of each field (in bytes) 
fieldlength=10 

# Should read all fields 
readallfields=true 

# Should write all fields on update 
writeallfields=false 

fieldlengthdistribution=constant 

readproportion=0.95 

updateproportion=0.05 

insertproportion=0 

readmodifywriteproportion=0 

scanproportion=0 

maxscanlength=1000 

scanlengthdistribution=uniform 

insertorder=hashed 

requestdistribution=zipfian 
hotspotdatafraction=0.2 

hotspotopnfraction=0.8 
table=usertable 

measurementtype=histogram 

histogram.buckets=1000 
timeseries.granularity=1000 
+0

Пропускная способность не масштабируется вообще относительно количества клиентов. С 1 клиентом мы получаем заданное количество оп/сек. При одновременном запуске двух клиентов ycsb каждый получает пропускную способность/2, 4 клиента получает пропускную способность/4. Устанавливает одновременное чтение на 1024, а также соединения core и max в клиенте ycsb до 1024. nload не обнаруживает изменений сетевого трафика при добавлении клиентов (ожидание 2x трафика при переходе от 1 клиента к 2). Трафик только ~ 20 Мбит, поэтому определенно не узкий. – Rdesmond

+0

Компактные SSTables не влияли на производительность. – Rdesmond

+0

Вы должны уточнить, о чем вы спрашиваете. – cabad

ответ

0

Ключ увеличивается native_transport_max_threads в файле casssandra.yaml.

Наряду с увеличенными настройками комментария (увеличение соединений в клиенте ycsb, а также одновременное чтение/запись в cassandra), Cassandra перепрыгивает до ~ 80 000 оп/сек.

 Смежные вопросы

  • Нет связанных вопросов^_^