benchmark配置文件
参考 博客: 工具| benchmarksql使用指南_yangyidba-商业新知
配置文件路径:
./benchmarksql-5.0/run
配置文件中的参数说明:
db=postgres
driver=org.postgresql.Driver //驱动程序,每种数据库有对应的驱动
conn= jdbc:postgresql//127.0.0.1:5444/benchmark //连接库的地址,benchmark为压测的库,也可以指定其他库,需要先在实例下创建。
user=benchmark
password=benchmark
warehouses=4 //仓库数量
loadWorkers=4 //初始化数据的加载进程数量,默认为4,实际使用可以结合os性能做配置
terminals=4 //终端数,即并发客户端数量,通常设置为CPU线程总数的2~6倍
runTxnsPerTerminal=0 //每个终端运行的固定事务数量,如该值为10, 则每个terminal运行10个事务,如果有32个终端,那整体运行320个事务后,测试结束。该参数配置为非0值时,下面的runMins参数必须设置为0。
runMins=5 //runMins表示要压测的时间长度,单位为分钟。该值为非0值时,runTxnsPerTerminal参数必须设置为0。这两个参数不能同时设置为正整数,如果设置其中一个,另一个必须为0,主要区别是runMins定义时间长度来控制测试时间;runTxnsPerTerminal定义事务总数来控制时间。
limitTxnsPerMin=0 //Number of total transactions per minute
terminalWarehouseFixed=true //终端和仓库的绑定模式,设置为true时可以运行4.x兼容模式,意思为每个终端都有一个固定的仓库。设置为false时可以均匀的使用数据库整体配置。TPCC规定每个终端都必须有一个绑定的仓库,所以一般使用默认值true。
//下面五个值的总和必须等于100,默认值为:45, 43, 4, 4,4 ,与TPC-C测试定义的比例一致,实际操作过程中,可以调整比重来适应各种场景。
newOrderWeight=45
paymentWeight=43
orderStatusWeight=4
deliveryWeight=4
stockLevelWeight=4
测试过程中的整体逻辑通过一个例子来说明:
-
假如limitTxnsPerMin参数使用默认300,termnals终端数量设置为150并发,实际会计算一个值A=limitTxnsPerMin/terminals=2(此处需要注意,A为int类型,如果terminals的值大于limitTxnsPerMin,得到的A值必然为0,为0时该参数失效),此处记住A=2;
-
接下来,在整个测试运行过程中,软件会记录一个事务的开始时间和结束时间,假设为B=2000毫秒;
-
然后用60000 ms除以A得到一个值C=60000/2=30000,假如事务运行时间B<C,那么该事务执行完后,sleep C-B秒再开启下一个事务;假如B>C,意味着事务超过了预期时间,那么马上进行下一个事务。在本例子中,每分钟300个事务,设置了150个并发,每分钟执行2个并发,每个并发执行2秒钟完成,每个并发sleep 28秒,这样可以保证一分钟有两个并发,反推回来整体并发数为300/分钟。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?