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