在上一篇文章里【Fabric2.3 使用Caliper进行性能测试(保姆级示范,亲测可行)】,在走通测试样例后,新的问题就产生了:如果我们需要测量不同交易量下的区块链性能,去哪里设置修改呢?本篇Blog将以上面提到的这一篇样例为研究对象,来解决这个问题。

在这段执行命令里,

npx caliper launch manager \
--caliper-workspace ./ \
--caliper-networkconfig networks/fabric/test-network.yaml \
--caliper-benchconfig benchmarks/samples/fabric/fabcar/config.yaml \
--caliper-flow-only-test \
--caliper-fabric-gateway-enabled

我们看到Caliper的工作路径、网络配置、测试配置,其中路径benchmarks/samples/fabric/fabcar/config.yaml 指定的是测试配置文件。接下来我们预览一下这个config.yaml的文本内容

我们用红框标识出来了这里面用到的两种交易量的设置方式。

接下来我们先认识一下这些参数及其含义

参数 含义
test.name 要在报告中显示的benchmark的短名称。
test.description 要在报告中显示的benchmark的详细说明。
test.workers 与工作线程相关的对象的配置。
test.workers.type (暂未投入使用)
test.workers.number 指定用于执行工作负载的工作进程数。
test.rounds 对象回合数组,一个数组下可以有多轮不同的测试任务。
test.rounds[i].label 该轮测试的名称,通常对应于该轮要提交的测试的类型。
test.rounds[i].txNumber 应在该轮任务提交的任务数。
test.rounds[i].txDuration 该轮提交任务数的用时(单位,秒)。
test.rounds[i].rateControl 描述该轮的速率控制策略。
test.rounds[i].workload 描述该轮的工作负载模块。
test.rounds[i].workload.module 该轮基准测试工作负载模块实现的路径。
test.rounds[i].workload.arguments 作为配置,传递给该轮工作负载模块的参数

因为我们要调整交易数量,所以我们要对rateControl做进一步了解

  • fixed-rate

固定速率控制器是最基本的控制器,如果没有指定控制器,它会是默认选项。 它将以指定为 TPS(每秒事务数)的固定间隔发送输入事务。

以 10 TPS 驱动的固定速率控制器通过以下控制器选项指定

{"type": "fixed-rate","opts": {"tps" : 10}
}
  • fixed-load

固定负载率控制器是用于以目标负载(积压事务)驱动测试的控制器。 该控制器旨在通过修改驱动的 TPS 来维护系统内已定义的事务积压。 结果是系统的最大可能 TPS,同时保持挂起的事务负载。

固定负载控制器旨在保持 SUT ( 受测系统的简写:***S***ystem ***u***nder ***T***est)事务负载为 5,起始 TPS 为 100,通过以下控制器选项指定:

{"type": "fixed-load","opts": {"transactionLoad": 5,"startingTps": 100}
}

这里对常用的fix-rate和fix-load做了必要介绍,其他还有很多控制器,不做展开叙述,需要了解的话可以参考官方文档。

做完知识引导,我们接着回来分析前面提到的配置文件

test:workers:number: 5rounds:- label: Create a car.# 5000 transactions should create around 1000 cars per worker but not guaranteed# so need to set asset limits to less than 1000 for the other teststxNumber: 5000rateControl:type: fixed-loadopts:transactionLoad: 5workload:module: benchmarks/samples/fabric/fabcar/createCar.js- label: Change car owner.txDuration: 30rateControl:type: fixed-loadopts:transactionLoad: 5workload:module: benchmarks/samples/fabric/fabcar/changeCarOwner.jsarguments:assets: 500- label: Query all cars.txDuration: 30rateControl:type: fixed-loadopts:transactionLoad: 5workload:module: benchmarks/samples/fabric/fabcar/queryAllCars.jsarguments:assets: 500startKey: '1'endKey: '50'- label: Query a car.txDuration: 30rateControl:type: fixed-loadopts:transactionLoad: 5workload:module: benchmarks/samples/fabric/fabcar/queryCar.jsarguments:assets: 500

我们可以读取到这些信息:指定了5名工人,进行了四项测试,分别是“Create a car”、“Change car owner”、“Query all cars”、“Query a car”。以“Create a car”为例,这个指定了交易数为5000,以保持 SUT 事务负载为 5的形式,提交交易。负责执行该任务内容的是createCar.js。然后可以再看“Change car owner”,保持 SUT 事务负载为 5下,这个测试任务要持续30s。

所以,我们从这两个示例可以理解到,在我们介绍的知识背景下。我们可以有下面4种交易量配置组合方式

配置策略 含义
txNumber + fixed-load 指定交易量+固定负载,执行持续时间随机
txNumber + fixed-rate 指定交易量+固定提交速率,执行持续时间可计算
txDuration + fixed-load 指定执行持续时间+固定负载,交易量随机
txDuration + fixed-rate 指定执行持续时间+固定提交速率,交易量可计算

所以我们可以看到样例程序的测试结果是这样的

根据上面的分享,有需要的同学,可以自己对你所需要测试的区块链平台或链码进行自主的配置。勇敢一些,不要怕试错。希望能有所帮助!

更多细节也可以参考这篇文档。

解读 Caliper 修改配置文件调整交易量进行性能测试(中文首发)相关推荐

  1. typora将html转为格式,Typora 修改配置文件实现自定义标签样式(常用)

    Typora 修改配置文件实现自定义标签样式(常用) Typora 修改配置文件实现自定义标签样式(常用) 一.简介 Typora 是一款支持实时预览的 Markdown 文本编辑器.它系统自带了几种 ...

  2. linux(以ubuntu为例)下Android利用ant自动编译、修改配置文件、批量多渠道,打包生成apk文件...

    原创,转载请注明:http://www.cnblogs.com/ycxyyzw/p/4555328.html  之前写过一篇<windows下Android利用ant自动编译.修改配置文件.批量 ...

  3. phpstudy升级mysql之后,修改配置文件无效的问题

    博主刚到新公司,用的还是phpstudy集成环境,只是公司用的数据库是Mysql5.7的,而phpstudy默认自带的数据库只是mysql5.5的.无奈之下升级,但是升级后发现修改配置文件无效,一定是 ...

  4. 网站推广专员浅析不做大幅修改如何调整网站推广内容?

    通常在企业网站上线后正式开展网站推广生涯,在此后长达数年的运营优化过程中难免会有想要修改或调整网站内容的冲动,但由于网站经过大改或大幅度调整过后都会被搜索引擎注意到影响网站当前的排名和权重数值,为了避 ...

  5. configparser模块和PyYAML模块生成和修改配置文件

    文章目录: 1 configparser模块 2 PyYAML模块 2.2 yaml基本使用 2.2.1 使用yaml.load()读取yaml文件,并获取其中的配置信息 2.2.2 使用yaml.l ...

  6. Asp.net使用代码修改配置文件的节点值

    使用代码修改配置文件的方法: 1.打开配置文件写入的权限 2.先按节点名称长到要修改的节点,然后删除,紧接着将有新值的节点添加回去 3.关闭配置文件写入的权限 修改Appsetting节点的值,修改其 ...

  7. MySQL 数据库linux系统下修改配置文件设置mysql是否大小写敏感实例演示

    通过 vim /etc/my.cnf 修改配置文件, 在 mysqld 模块下面添加 lower-case-table-names=1, 参数 1 代表大小不敏感,0 代表大小写敏感. 再通过 ser ...

  8. python读写修改配置文件(ini)

    示例ini配置文件(setting.ini) [txtA] name = comma,end,full,run comma = 1000 end = 3 full = 2 run = 1 defaul ...

  9. Nacos服务的注册,服务的调用,修改配置文件自动刷新和命名空间

    一.nacos配置中心的配置 使用nacos作为配置中心,不需要再到远端仓库拉取配置文件. 详细的nacos控制台配置参见官方链接 二.服务的注册 创建项目并引入依赖 <!--引入nacos c ...

最新文章

  1. Maven3.x 插件开发入门
  2. 利用java反射机制,子类从父类拷贝属性--解决信息修改类设计的模式
  3. git clone 一些简单笔记
  4. 详解语义分割评价指标
  5. 常用七大经典排序算法总结(C语言描述)
  6. 当初阿里巴巴、百度、美团都差点错过的架构,现在用起来真香!
  7. ubantu中rpm转换成deb(软件包格式)
  8. 古代婚姻和现代社会矛盾了。导致大量大龄女性未婚
  9. dpkg命令_Linux 命令学习神器!命令看不懂直接给你解释!
  10. ICE通信之IceGrid服务(一)
  11. vue ---- 数组的常用方法
  12. jmeter线程跳转_有什么方法调用jmeter的接口
  13. VM虚拟机下安装vulkan的踩坑
  14. hive3之执行计划(Explain)、Fetch 抓取、本地模式、表的优化、Group By、笛卡尔积、行列过滤
  15. spark编程:DataFrame和SQL编程基础-2
  16. 防火墙——Efficient理论讲解(IPSec4)
  17. 百度运维部农场,绿色畅想
  18. recvfrom的addrlen参数
  19. 每日加瓦,终成栋房5-正则表达式
  20. 福建专科计算机学校排名2015,2015福建专科学校排名及排行榜

热门文章

  1. PDMS二次开发(三)——小试牛刀之材料DOTD属性批处理工具
  2. c语言 feof 死循环,请教:为什么我用while(!feof(fp))时会出现无限循环????
  3. html5怎么实现展开收起,小程序实现展开/收起的效果示例
  4. PTA-面向对象程序设计实验8:综合-模拟Qt框架
  5. 常规密码学加解密脚本(python)
  6. 卸载虚拟机 vm12 vm15
  7. 论文解读:基于迁移移学习的深卷积神经网络,用于从蛋白质主要序列预测与白血病相关的磷酸化位点
  8. ADC 转换:神舟IV实验
  9. oracle 去除重复数据 只取一条数据
  10. 2022年浙江助理工程师职称怎么申请呢?甘建二