YCSB,全称为"Yahoo!Cloud Serving Benchmark", 是雅虎开发的用来对云服务进行基础测试的工具,其内部涵盖了常见的NoSQL数据库产品, 如Cassandra、MongoDB、HBase、Redis等等。在运行YCSB的时候,可以配置不同的workload和DB,也可以指定线程数和并发数等其他参数。
原生的YCSB,其纯命令行式的使用体验对我而言存在诸多不便,特别是在对测试的结果进行收集、汇总、分析和历史比对的时候。
于是乎,心里萌发出了一个想法,把YCSB平台化,它拥有简单的界面、而且具备YCSB所有的功能,此外,它需要支持分布式。因为,单节点的机器资源, 或许无法满足针对超大型数据库系统的基准性能测试。最后,YCSB压测的结果指标被DataCenter统一收集和汇总,以图表化的形式呈现给用户, 并可以支持与历史测试数据的各个维度进行对比。
- 支持YCSB的所有功能,目前优先对HBase进行适配,但它理论上可以支持YCSB支持的所有数据库
- 支持多执行器并发执行YCSB的压测任务
- 支持YCSB压测任务的定时、以及单次触发
- 压测任务界面化的编辑功能
- 压测任务执行时日志实时预览
- 压测任务依赖功能,比如:load -> run workloada -> run workloadb
- 报警功能,任务运行失败及时报警
- 压测任务调度报表展示、压测结果指标绘图(规划开发中)
- 用户管理,用户与执行器功能绑定
创建执行器,支持绑定多个节点的地址,已实现分布式YCSB基准性能测试。
创建一个YCSB的压测任务,可以设置为定时调度,也可以设置为一次执行, 任务参数示例:
-db com.leo.ycsb.job.executor.db.HBaseClient
-P /Users/leojie/other_project/ycsb-web/conf/workloads/workloada
-p hbase.config.file.path=/Users/leojie/other_project/ycsb-web/conf/hbase-site.xml
-p table=usertable -p columnfamily=info
-p recordcount=1000000 -p operationcount=1000000
-p threadcount=20 -s -t
我们在添加的任务操作按钮中选择执行一次。
查看任务的调度列表。
操作按钮中选择查看执行日志,如下图,YCSB压测任务的实时日志会输出到WebConsole中
任务运行结束或被kill之后,YCSB的测试汇总数据也会输出到界面中。
快马加鞭开发中
mvn clean package assembly:single
上述编译命令运行完成后,在ycsb-job-assembly
模块的target目录下可以找到ycsb-web-1.0.0-bin.tar.gz
解压后的文件夹目录结构
sh bin/ycsb-web-admin.sh start|stop|status|restart
sh bin/ycsb-web-executor.sh start|stop|status|restart
上述命令分别启动admin和executor
针对系统的一些自定义配置,请查看bin/ycsb-web-env.sh
,以下配置会以系统变量的形式传递给spring boot的配置文件
# 设置ycsb admin所需的一些环境变量
# ycsb web admin web服务的端口号
export YCSB_ADMIN_SERVER_PORT="8888"
# ycsb web admin数据库配置
export YCSB_ADMIN_DB_HOST="127.0.0.1"
export YCSB_ADMIN_DB_PORT="3306"
export YCSB_ADMIN_DB_NAME="ycsb_web"
export YCSB_ADMIN_DB_USER="leo"
export YCSB_ADMIN_DB_PASSWORD="Yyf5211314!"
# ycsb web admin的报警邮箱配置
export YCSB_ADMIN_MAIL_HOST="smtp.aliyun.com"
export YCSB_ADMIN_MAIL_PORT="465"
export YCSB_ADMIN_MAIL_USER="weixiao.me@aliyun.com"
export YCSB_ADMIN_MAIL_FROM="weixiao.me@aliyun.com"
export YCSB_ADMIN_MAIL_PASSWD="your email password"
# 设置ycsb executor所需的一些环境变量
# ycsb executor web服务端口号
export YCSB_EXECUTOR_SERVER_PORT=8889
# ycsb admin 主页地址,用于executor与admin进行RPC通信
export YCSB_ADMIN_ADDR="http://127.0.0.1:8888/ycsb-job-admin"
# ycsb executor 名称
export YCSB_EXECUTOR_NAME="ycsb-job-executor"
# ycsb executor RPC远程地址
export YCSB_EXECUTOR_ADDR="http://127.0.0.1:9999/"
# ycsb executor RPC服务的IP和端口号
export YCSB_EXECUTOR_IP="127.0.0.1"
export YCSB_EXECUTOR_PORT="9999"
conf目录时系统的配置文件目录
conf/sql 目录中的ycsb_web.sql文件需要执行下初始化数据库 conf/workloads 目录对应着ycsb的workloads ycsb-webapps是系统的静态资源目录,不用关注 logs目录是系统的日志目录
ycsb-web的idea源于JMeter,编码的实现则基于xxl-job和YCSB整合而来,两个毫不相干的项目,被强扭在了一起,看起来倒也契合, 这强扭的瓜或许也挺甜。
XXL-JOB、YCSB