最近比较忙,比较少出没知乎。下午花了点时间写了一篇”轻量级”的文章,介绍一个性能压测工具:YCSB,全称为“Yahoo! Cloud Serving Benchmark”。
它是一个非常方便的针对分布式文件系统的测试工具。
支持如MongoDB、HBase、Redis、Memcached等等很多的NoSQL产品,不仅安装使用简单,还能自由扩展测试数据类型和支持的数据库产品。
YCSB是Hbase等NoSQL官方Jira上面的测试标准,测试报告就很具有说服能力。
1、安装
不说了,看wiki,很清楚:https://github.com/brianfrankcooper/YCSB/wiki
2、特点明显:
1)可任意设置压测的读写比例、线程数量,最后的测试报告也比较详细 。
2)通过YCSB的测试数据报告比较具有说服力。
3、执行命令:
./bin/ycsb load hbase12 -P workloads/workloada -p threads=10 -cp /etc/hbase/conf -p table=usertable -p columnfamily=f1 -p recordcount=10000 -s > result_data/load.dat
4、YCSB主要的属性
workload:要使用的工作量类,可以选择读写比例、实现类、读写请求的分布模式
db:要使用的数据库类。可选地,这在命令行可以指定(默认:com.yahoo.ycsb.BasicDB)
threads:YCSB客户端的线程数。可选地,这可以在命令行指定(默认:1)
-p:是传入的参数
table:是hbase表的名称
recordcount:装载进数据库的初始记录数
fieldcount:一条记录中的字段数(默认:10)
fieldlength:每个字段的大小(默认:100)
等等,可以通过wiki学习更多属性
5、结果:
主要关注总的执行时间RunTime、吞吐量Throughput,以及读和写的平均延迟等95thPercentileLatency、99thPercentileLatency
报告如下:
[OVERALL], RunTime(ms), 4891550.0
[OVERALL], Throughput(ops/sec), 2044.3417730576198
[TOTAL_GCS_PS_Scavenge], Count, 6344.0
[TOTAL_GC_TIME_PS_Scavenge], Time(ms), 41175.0
[TOTAL_GC_TIME_%_PS_Scavenge], Time(%), 0.8417577250564751
[TOTAL_GCS_PS_MarkSweep], Count, 4.0
[TOTAL_GC_TIME_PS_MarkSweep], Time(ms), 517.0
[TOTAL_GC_TIME_%_PS_MarkSweep], Time(%), 0.010569246966707893
[TOTAL_GCs], Count, 6348.0
[TOTAL_GC_TIME], Time(ms), 41692.0
[TOTAL_GC_TIME_%], Time(%), 0.8523269720231829
[CLEANUP], Operations, 10.0
[CLEANUP], AverageLatency(us), 21001.4
[CLEANUP], MinLatency(us), 14.0
[CLEANUP], MaxLatency(us), 208895.0
[CLEANUP], 95thPercentileLatency(us), 208895.0
[CLEANUP], 99thPercentileLatency(us), 208895.0
[READ], Operations, 9499963.0
[READ], AverageLatency(us), 2315.9316643654297
[READ], MinLatency(us), 252.0
[READ], MaxLatency(us), 1259519.0
[READ], 95thPercentileLatency(us), 4591.0
[READ], 99thPercentileLatency(us), 8783.0
[READ], Return=OK, 9499963
[UPDATE], Operations, 500037.0
[UPDATE], AverageLatency(us), 4667.223299475839
[UPDATE], MinLatency(us), 968.0
[UPDATE], MaxLatency(us), 1213439.0
[UPDATE], 95thPercentileLatency(us), 7747.0
[UPDATE], 99thPercentileLatency(us), 14631.0
[UPDATE], Return=OK, 500037