【Fabric 超级账本学习【3】Fabric2.4 使用Tape进行吞吐量量性能测试】
创始人
2024-05-31 23:27:42

如果想测试一下超级账本fabric对某个合约函数的执行时间是多少,简单地可以通过打印合约函数开始执行时间和结束执行时间来计算时间差就可以了。

Tape 是一款轻量级 Hyperledger Fabric 性能测试工具。

tape的github地址:https://github.com/Hyperledger-TWGC/tape

步骤:

  1. 启动Fabric2.4网络环境,安装部署官方链码(asset)(成功搭建Fabric2.x网络是前提)
./network.sh up createChannel -s couchdb

注意一定要有couchdb,不然会不成功的!!!!!!!!在这里插入图片描述

  1. 克隆官方tape仓库:git clone https://github.com/Hyperledger-TWGC/tape

在这里插入图片描述

  1. 将test-network的网络生成的证书文件夹复制到tape文件内:

在这里插入图片描述

  1. 进入Tape文件夹下,找到config.yaml文件,修改配置信息如下:
    在这里插入图片描述
    将config.yaml文件配置信息替换为如下配置信息
# Definition of nodes
peer1: &peer1addr: localhost:7051ssl_target_name_override: peer0.org1.example.comorg: org1tls_ca_cert: /config/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pempeer2: &peer2addr: localhost:9051ssl_target_name_override: peer0.org2.example.comorg: org2tls_ca_cert: /config/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pemorderer1: &orderer1addr: localhost:7050ssl_target_name_override: orderer.example.comorg: org1tls_ca_cert: /config/organizations/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pempolicyFile: /config/test/andLogic.rego# Nodes to interact with
endorsers:- *peer1
# we might support multi-committer in the future for more complex test scenario,
# i.e. consider tx committed only if it's done on >50% of nodes. But for now,
# it seems sufficient to support single committer.
committers: - *peer1- *peer2commitThreshold: 1orderer: *orderer1# Invocation configs
channel: mychannel
chaincode: basic
args:- GetAllAssets
mspid: Org1MSP
private_key: /config/organizations/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/keystore/priv_sk
sign_cert: /config/organizations/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/signcerts/User1@org1.example.com-cert.pem
num_of_conn: 10
client_per_conn: 10
  1. 然后在tape文件夹下命令行输入如下命令启动执行,成功运行截图如下:
docker run --network=host -v $PWD:/config guoger/tape tape -c /config/config.yaml -n 50000

在这里插入图片描述
参数含义如下:

Time:耗时

Block:区块高度

tx:交易数量

duration:总耗时

tps:每秒交易数量 (TPS = 交易数量 / 交易总耗时)

如果要运行1000次指定的合约函数,可以运行下面的命令:

./tape --config=config.yaml --number=1000
或
./tape -c config.yaml -n 1000

上面的命令是直接运行1000次指定的合约函数,这样有可能瞬间的交易量过大,区块链处理不过来而导致交易丢失。Tape有2个参数–rate和–brust,利用令牌桶的机制实现限流。

burst参数是一个整数,定义了令牌桶的大小,

rate参数是一个浮点数,定义了每秒钟往令牌桶增加令牌的数量(注意,rate可以是小数,如rate为0.2,表示每秒钟往令牌桶增加0.2个令牌),0表示没有限制

rate参数不能大于burst,否则,rate的大小设为burst的大小

./tape -c config.yaml -n 1000 --rate=0.2 --burst=1 表示令牌桶里的令牌初始值1个,一开始执行1次合约函数(每执行1次合约函数,令牌数减1),令牌桶里的令牌剩余数变为0。后面是每秒增加0.2个令牌,到第5秒时,令牌桶里的令牌数为1,那么再次执行1次合约函数,令牌桶里的令牌剩余数又变为0,如此类推。

./tape -c config.yaml -n 1000 --rate=0.2 --burst=2 表示令牌桶里的令牌初始值2个,一开始执行2次合约函数,令牌桶里的令牌剩余数变为0。后面是每秒增加0.2个令牌,到第5秒时,令牌桶里的令牌数为1,那么再次执行1次合约函数,令牌桶里的令牌剩余数又变为0,如此类推。

假设只运行2次Test函数, 执行命令:./tape -c config.yaml -n 2 ,我们可以看到运行结果:

Time 2.15s Block 1049 Tx 2

tx: 2, duration: 2.146063431s, tps: 0.931939

上述结果表示:

总耗时约 2.146063431秒,交易写入的区块号是1049,交易数量是2个,TPS(每秒交易数量)是0.931939 (TPS = 交易数量 / 交易总耗时)

通过Tape工具,可以实现Fabric对某个指定合约函数的压力测试,并得到相应的TPS测试结果

相关内容

热门资讯

为非遗注入时尚力量 转自:贵州日报 权若青凯里“绣里淘”非遗集市,草木染的清香在空气中浮动,苗语叫卖声如古老歌谣在耳畔回...
贵州理工学院4门课程获批国家级... 转自:贵州日报 本报讯(记者 王雨)记者从贵州理工学院获悉,近日教育部发布《教育部关于公布第三批国家...
“贵州造”给煤矿安全装上“顺风... 转自:贵州日报贵州省能源智能开发与高效利用实验室。 张凌 摄 贵州日报天眼新闻记者 张凌在贵州深邃复...
一块钢板如何变为风力发电机组的... 转自:贵州日报贵州保龙设备制造有限公司风电塔筒生产车间内,工人对塔筒焊接口进行打磨。 贵州日报天眼新...
全国政协副主席王光谦率队到我省... 转自:贵州日报 本报讯(记者 鲁毅)1月8日至11日,全国政协副主席、民盟中央常务副主席王光谦率队到...