运行测试
- 进入安装路径。
1
cd YCSB-0.15.0
主要目录说明:
- bin:目录下有个可执行的YCSB文件,是用户操作的命令行接口。YCSB主逻辑是:解析命令行、设置Java环境、加载Java-libs、封装成可以执行的Java命令,并执行。
- workloads:目录下有各种workload的模板,可以基于workload模板进行自定义修改。
默认的6种测试场景如下:
- workloada:读写均衡型,50%/50%,Reads/Writes
- workloadb:读多写少型,95%/5%,Reads/Writes
- workloadc:只读型,100%,Reads
- workloadd:读最近写入记录型,95%/5%,Reads/insert
- workloade:扫描小区间型,95%/5%,scan/insert
- workloadf:读写入记录均衡型,50%/50%,Reads/insert
- workload_template:参数列表模板
- 压测配置。
选择需要测试的测试场景,编辑对应的配置文件,以读写测试为例:
1
vi workloads/workloada
配置文件的具体参数项如下:
表1 配置文件具体参数 参数项
参数具体含义
recordcount
YCSB load阶段加载的记录条数
operationcount
YCSB run阶段执行的操作总数
workload
workload实现类
readallfields
查询时是否读取记录的所有字段
readproportion
读操作的百分比
updateproportion
更新操作的百分比
scanproportion
插入操作的百分比
requestdistribution
请求分布模式,uniform、zipfian和latest三种分布模式
mongodb.url
待测试mongo实例的连接地址
须知:此项为添加项。
mongodb.database
测试时使用的数据库名称,默认为ycsb
须知:此项为添加项。
- 加载数据。
1
bin/ycsb load mongodb -threads 100 -P workloads/workloada
图1 加载数据回显图2 加载数据回显返回字段Return=OK,则表示数据导入成功。
命令参数说明:
ycsb [command] [database] [options]
- command选项:
load:载入测试数据。
run:执行测试过程。
shell:交互模式。
- database选项:指定测试的数据库场景,例如mongodb、cassandra、memcached等。
- options选项:
-P file :指定workload文件,相对路径或者绝对路径。
-cp path :指定额外的Java classpath。
-jvm-args args :指定额外的JVM参数。
-p key=value :设置ycsb配置项,会覆盖workload文件的配置项。
-s :运行时的中间状态打印到stderr中。
-target n :表示1s中总共的操作次数。
-threads n :设置ycsb client的并发测试线程数,默认是1,单线程。
- command选项:
- 执行测试。
1
bin/ycsb run mongodb -threads 100 -P workloads/workloada
图3 执行测试回显图4 执行测试回显返回字段Return=OK,则表示测试完成,取“[OVERALL],Throughput”值作为测试指标。
[OVERALL], RunTime(ms), 1123 # 测试过程耗时(毫秒)
[OVERALL], Throughput(ops/sec), 8904.719501335709 # 测试过程中的吞吐量(ops/sec)
[READ], Operations, 5020 # 执行read操作的总数
[READ], AverageLatency(us), 4126.0304780876495 # 每次read操作的平均时延(微秒)
[READ], MinLatency(us), 299 # 每次read操作的最小时延(微秒)
[READ], MaxLatency(us), 168959 # 每次read操作的最大时延(微秒)
[READ], 95thPercentileLatency(us), 6659 # 95% read操作的时延在6659微秒以内
[READ], 99thPercentileLatency(us), 157311 # 99% read操作的时延在157311微秒以内
[READ], Return=OK, 5020 # 返回成功,操作数5020
[UPDATE], Operations, 4980 # 执行update操作的总数
[UPDATE], AverageLatency(us), 3846.1317269076303 # 每次update操作平均时延(微秒)
[UPDATE], MinLatency(us), 321 # 每次update操作的最小时延(微秒)
[UPDATE], MaxLatency(us), 168575 # 每次update操作的最大时延(微秒)
[UPDATE], 95thPercentileLatency(us), 6555 # 95% update操作的时延在6555微秒以内
[UPDATE], 99thPercentileLatency(us), 26351 # 99% update操作的时延在26351微秒以内
[UPDATE], Return=OK, 4980 # 返回成功,操作数4980