以docker启动fabric网络,高并发大规模数据插入账本时,容器磁盘占用率急速升高

首先我们测试fabric网络的并发量:

Fabric性能验证实验

目的:

验证fabric在并发请求(invokequery)下的性能

实验条件:

centos7系统下搭建fabric,基于fabric v1.0.6版本,go version go1.9.2 linux/amd64Docker version 18.01.0-ce, build 03596f5docker-compose version 1.18.0, build 8dd22a9

安装fabric所需环境,可以参考http://blog.csdn.net/btqszl/article/details/78182525

实验网络拓扑:

 

实验步骤:

1. 实验基于fabric官方提供的e2e例子开启区块链网络

cd $GOPATH/src/github.com/hyperledger/fabric/examples/e2e_cli

./network_setup.sh up

开启网络后,见到下图表示网络开启成功

 

docker ps -a


网络中包含两个组织共4peer节点,一个orderer排序节点,网络中已经安装$GOPATH/src/github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02/chaincode_example02.go智能合约,智能合约主要是一个转账操作,例如AB多少资金

2. 利用go web框架beegofabric-go-sdkinvoke(修改)和query(查询)接口进行restful封装,然后开启go web服务,等待响应并发请求,见下图表示beego服务已经开启


3. 采用压力测试工具abgo web服务进行压力测试

压测命令:

ab -c 1 -n 100 -p "test.txt" -T "application/json" 'http://localhost:2323/chaincode/invoke'

ab -c 1 -n 100 -p "test.txt" -T "application/json" 'http://localhost:2323/chaincode/query'

实验结果:

fabricinvoke并发性能异常,怀疑是因为并发请求时,多次交易(A转账B)基于账本同一状态,当前面的交易提交到账本后,账本状态改变,导致后面的交易变为无效,所以修改智能合约,使得invoke操作变为插入操作(key->value),然后修改beego服务程序,使得invoke操作每次插入不同的key(自增),再次对invokequery接口进行压力测试

测试结果:

Invoke

invoke在并发不超过330时,不会产生失败请求

Query

query在并发不超过500时,不会产生失败请求,和修改前测试结果一样

 df -h   查看磁盘占用空间


发现是容器的log增长过快,修改docker compose启动文件, 关闭容器log问题解决


©️2020 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值