ycsb压测工具操作文档
ycsb压测工具操作文档
ycsb介绍
ycsb全称Yahoo! Cloud Serving Benchmark,是是雅虎开发的用来对云服务进行基础测试的工具
其内部涵盖了常见的NoSQL数据库产品,如MongoDB、HBase、Redis等等
准备环境
参考文档:https://github.com/brianfrankcooper/YCSB/tree/master/mongodb
安装openjdk
# 1、新建可以包目录缓存
yum makecache
# 2、查询可用的包
yum list java-1.8*
# 3、安装openjdk
yum install -y java-1.8.0-openjdk.x86_64
# 4、检验是否安装完成
java -version
获取ycsb
wget https://github.com/brianfrankcooper/YCSB/releases/download/0.17.0/ycsb-0.17.0.tar.gz
ycsb使用说明
ycsb命令格式如下
ycsb command database [options]
- command:load用于压测前的数据准备;run执行压测
- database:压测数据库名称
- options:-P指定workload文件;-p key=value覆盖workload中的参数;-threads进程数;-s执行过程中是否打印状态信息
目录结构
bin 目录下为用户所需使用的可执行文件
workloads 目录下为预置的一些测试方案模板
workload中的参数说明
参数 | 说明 |
---|---|
recordcount | load阶段加载到数据库的纪录条数;run阶段操作的数据范围 |
operationcount | run阶段执行的操作总数 |
readallfields | 查询时是否读取所有字段 |
fieldcount | 每条记录的字段个数 (default: 10) |
fieldlength | 每个字段的数据长度 (default: 100) |
readproportion | 读操作比例 (default: 0.95) |
updateproportion | 更新操作比例 (default: 0.05) |
insertproportion | 插入操作比例 (default: 0) |
insertstart | 第一个插入值的偏移量(default: 0) |
scanproportion | 扫描作业比例 (default: 0) |
readmodifywriteproportion | 读取一条记录修改它并写回的比例 (default: 0) |
requestdistribution | 请求的分布规则 uniform/zipfian/latest (default: uniform) |
mongodb.url | 待测试mongo实例的连接地址 |
mongodb.database | 测试时使用的数据库名称(default: ycsb) |
table | 测试表的名称 (default: usertable) |
使用示例
加载压测数据
ycsb load mongodb -s -P ./workloads/workload -threads 100
执行压测
ycsb run mongodb -s -P ./workloads/workloada -threads 100
返回结果详解
# 数据加载所用时间,单位毫秒(ms)
[OVERALL], RunTime(ms), 938015
# 吞吐量,即ops(每秒操作次数)
[OVERALL], Throughput(ops/sec), 1066.0810328193045
[TOTAL_GCS_PS_Scavenge], Count, 1323
[TOTAL_GC_TIME_PS_Scavenge], Time(ms), 2368
[TOTAL_GC_TIME_%_PS_Scavenge], Time(%), 0.2524479885716113
[TOTAL_GCS_PS_MarkSweep], Count, 1
[TOTAL_GC_TIME_PS_MarkSweep], Time(ms), 32
[TOTAL_GC_TIME_%_PS_MarkSweep], Time(%), 0.0034114593050217747
[TOTAL_GCs], Count, 1324
[TOTAL_GC_TIME], Time(ms), 2400
[TOTAL_GC_TIME_%], Time(%), 0.2558594478766331
# 操作的总次数
[CLEANUP], Operations, 100
# 平均响应延时,单位是微秒(us)
[CLEANUP], AverageLatency(us), 174.62
# 最小响应时间,单位是微秒(us)
[CLEANUP], MinLatency(us), 1
# 最大响应时间,单位是微秒(us)
[CLEANUP], MaxLatency(us), 17311
# 95%的操作延时,单位是微秒(us)
[CLEANUP], 95thPercentileLatency(us), 2
# 99%的操作延时,单位是微秒(us)
[CLEANUP], 99thPercentileLatency(us), 34
[INSERT], Operations, 1000000
[INSERT], AverageLatency(us), 92408.98899
[INSERT], MinLatency(us), 7456
[INSERT], MaxLatency(us), 27885567
[INSERT], 95thPercentileLatency(us), 303615
[INSERT], 99thPercentileLatency(us), 578559
# 成功返回数,这个值不符合测试要求,则证明测试失败
[INSERT], Return=OK, 1000000