YCSB低读吞吐量cassandra

时间:2016-08-03 08:26:06

标签: cassandra benchmarking ycsb

YCSB Endpoint benchmark让你相信Cassandra是Nosql数据库的黄金孩子。但是,在我们自己的盒子上重建结果(8个超线程核心,60 GB内存,2 500 GB SSD),我们的工作负载b的读取吞吐量很低(主要是读取,即95%读取,5%更新)。

cassandra.yaml设置与端点设置完全相同,禁止使用不同的IP地址和磁盘配置(1个SSD用于数据,1个用于提交日志)。虽然它们的吞吐量是每秒约38,000次操作,但无论(相对)线程/客户端节点数量如何,我们的吞吐量约为16,000。即一个具有256个线程的工作节点将报告~16,000 ops / sec,而4个节点将报告~4,000 ops / sec

我已将SSD数据驱动器的预读值设置为8KB。我将把自定义工作负载文件放在下面。

分析磁盘时&使用iostat的CPU使用率,似乎读取吞吐量始终为~200,000 KB / s,这似乎表明ycsb集群吞吐量应该更高(记录为100字节)。 ~25-30%的cpu似乎低于%iowait,10-25%的用户使用。

top和nload统计数据表面上没有瓶颈(< 50%内存使用率,10 Gb / s链路10-50 Mbits / sec)。

# 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 个答案:

答案 0 :(得分:0)

关键是在casssandra.yaml文件中增加native_transport_max_threads。

随着评论中增加的设置(增加ycsb客户端中的连接以及cassandra中的并发读/写),Cassandra跳跃到~80,000 ops / sec。