要对已经在Ubuntu20.04里搭建好的Fabric2.3.3使用Caliper进行性能测试,采集吞吐量和时延这两个性能指标。
1 安装Caliper
运行Caliper,要依托于Node,关于Node的下载安装,这里不做赘述。
首先caliper-benchmarks需要下载到指定文件路径位置。因为阅读了caliper-benchmarks的相关配置文件后,发现它yaml文件对test-network里的文件是采用相对路径定位的,需要将其下载到fabric-sample的上一级目录的位置才能正确执行。当然也可以随便下载到一个位置,然后修改caliper-benchmarks的配置内容,不妨事。如图,这是我下载它的位置
然后执行:
git clone https://github.com/hyperledger/caliper-benchmarks
然后打开caliper-benchmarks文件夹
cd caliper-benchmarks
以此执行以下命令,安装指定版本的hyperledger caliper
npm init -y
npm install --only=prod @hyperledger/[email protected] # 0.4.2对应的是fabric2.x,0.3.2对应fabric1.x
npx caliper bind --caliper-bind-sut fabric:2.4 # 绑定,这里用的2.4,因为2.3无,2.2也可以
绑定后,用下面这个命令可以查看所安装的caliper版本
npx caliper --version
2 部署链码
依次执行
cd ../fabric-samples/test-network # 回到test-network文件夹
./network.sh down
./network.sh up createChannel
这里,我们将部署caliper自带的fabcar样例,以供展开测试
./network.sh deployCC -ccn fabcar -ccp ../../caliper-benchmarks/src/fabric/samples/fabcar/go -ccl go
3 进行测试
显示部署成功后,再回到caliper-benchmarks目录下
cd ../../caliper-benchmarks/
我们将执行与刚才部署的fabcar相匹配的测试用例
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
这就是已经开始进行性能测试了,测试结果如下图所示
可以看到,我们的测试进行了四种,这个报表里的Succ就是成功的交易数量,Latency是延时,Throughput是吞吐量。并且,这个测试结果还会以html文件的形式保存在caliper-benchmarks文件夹下的report.html里。
4 其他
这篇Blog聚焦于能完整的呈现出使用Caliper对Fabric进行性能测试的操作流程。执行过程里,其实还是会遇到很多问题,比如go路径找不到,npm依赖下载不全,虚拟机服务器出问题等等,不一而足。建议查查资料,不要气馁。已经趟过,都能克服。
然后能见到这篇Blog的同学,应该也试过不少方案,并且也发现了,我是使用的这个
git clone https://github.com/hyperledger/caliper-benchmarks
而不是
git clone https://github.com/hyperledger/caliper
对的。如果你是在caliper里,走到了node-gpy时出现要使用python2的问题,考虑到现在的linux发行版都是预装的pyhton3,以及其他不方便卸载python3的因素,同学你要是还想沿着老路走,我建议你使用anaconda,创建一个pyhton2的环境,然后进入python2环境里解决这个问题,然后挑战下一个坑。
如果需要继续深入,可以参考这篇新作