简介
一个账本性能基准测试框架,它允许用户用预定义的用例来测试不同的账本解决方案,并得到一组性能测试结果。
这个基准框架的核心是一个能够翻译信息的“适配层”,Caliper能够安装智能合约,调用合约,并且查询各种分布式账本的状态,继而更好地评估其效力。
在可控环境内所支持的区块链上进行压力测试,并且生成相关结果,其中包括交易成功率、每秒交易次数、交易结算耗时、以及所有操作的资源消耗(比如CPU和内存)等
而且是大华为的。
目前支持区块链账本:
- fabric v1.0+,
- sawtooth 1.0+
- Iroha 1.0 beta-3
目前支持的性能指标:
- 成功率
- 延迟最大值、最小值、平均值、75%延迟时长,
- 吞吐量
- 资源消耗情况 CPU(max和avg) 内存(max和avg) 网络IO等
同类工具
/blockbench
安装依赖(针对Fabric的)(括号中为我当前的环境):
- Node.js 8.X(node -v v8.11.2 npm -v 3.10.10 )
- node-gyp
- Docker(docker -v Docker version 18.03.0-ce, build 0520e24)
- Docker-compose(docker-compose -v docker-compose version 1.16.1, build 6d1ac21)
- npm install -g grpc@1.10.1
- npm install fabric-ca-client@1.1.0 fabric-client@1.1.0 备注通过一下命令检查确定支持的版本
npm ls | grep fabric
前期因为,fabric使用v1.1.0,但fabric-client使用了v1.2.0,造成链码实例化失败,提示
Cannot read property 'getUpdates' of undefined
源码
https://github.com/hyperledger/caliper.git
放在/opt/gopath/src/github.com/hyperledger/caliper,然后cd caliper,执行npm install 确保无错误提示(v*P*n)
运行
node ./benchmark/simple/main.js -c ./config.json -n ./fabric.json
- -c : 基准测试配置文件, 如果不设置,默认使用 config.json .
- -n : 账本网络的配置文件. 如果不设置, 默认使用 config.json中设置的 blockchain config值.
OPEN
Query
结果汇总
报告
最后会生成一个html报告 下载
分析
根据Benchmark的config.json配置文件,测试主要包括open(开通账户,账本的写性能)和query(查询账户,账本的读性能)两个类型
open 的tps 分别设置50、100、150 ,在1000次交易结果显示100时吞吐量相对最高。
query的tps分别设置100、200,在5000次交易结果100时吞吐量相对最高。
另外发现open开通账户时oderer节点cpu处于使用中,query查询账户时oderer节点cpu接近0,和fabric交易过程吻合。
自定义性能测试
初步需要修改一下几个地方:首先是config.json、fabric.json和crypto-config,链码等
问题仓库
https://github.com/hyperledger/caliper/issues