【Fabric 超级账本学习【3】Fabric2.4 使用Tape进行吞吐量量性能测试】

news2024/12/28 8:28:32

如果想测试一下超级账本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: &peer1
  addr: localhost:7051
  ssl_target_name_override: peer0.org1.example.com
  org: org1
  tls_ca_cert: /config/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem
 
peer2: &peer2
  addr: localhost:9051
  ssl_target_name_override: peer0.org2.example.com
  org: org2
  tls_ca_cert: /config/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem
 
orderer1: &orderer1
  addr: localhost:7050
  ssl_target_name_override: orderer.example.com
  org: org1
  tls_ca_cert: /config/organizations/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pem
 
policyFile: /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
  - *peer2
 
commitThreshold: 1
 
orderer: *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测试结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/401515.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spark的基本概念与架构

一、Spark简介 Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交…

(二十五)操作系统--读者·写者问题

文章目录一、问题描述二、问题分析1.关系分析2.整理思路3.设置信号量4.注意三、代码实现1.代码2.改进代码四、总结一、问题描述 有读者和写者两组并发进程,共享一个文件,当两个或两个以上的读进程同时访问共享数据时不…

战斗力最强排行榜:10-30人团队任务管理工具

工欲善其事,必先利其器。在高效的任务执行过程中,选择灵活轻便的项目管理工具来提升工作效率、适应快速多变的发展诉求,对团队来说,至关重要。但是如果团队不大,企业对这块的预算又有限,大型的团队任务管理…

abc 联合索引查 bc索引到底走不走索引?

今天面试的时候,面试官有问到这个问题我说不会,可是面试官说走,网上也众说纷纭,那到底会不会走呢? 先看官网解释不会走: https://dev.mysql.com/doc/refman/8.0/en/multiple-column-indexes.html SELECT *…

响应式操作实战案例

Project Reactor 框架 在Spring Boot 项目 Maven 中添加依赖管理。 <dependency><groupId>io.projectreactor</groupId><artifactId>reactor-core</artifactId> </dependency><dependency><groupId>io.projectreactor</g…

AT32F437制作Bootloader然后实现Http OTA升级

首先创建一个AT32F437的工程&#xff0c;然后发现调试工程配置这里的型号和创建工程选的型号不一致&#xff0c;手动更改一下&#xff0c;使用PW Link下载程序的话还要配置一下pyocd.exe的路径。 打开drv_clk.c文件的调试功能看下系统时钟频率。 项目使用的是AT32F437VMT7芯片&…

ESP UART 介绍

1 UART 介绍 UART 是一种以字符为导向的通用数据链&#xff0c;可以实现设备间的通信。异步传输的意思是不需要在发送数据上添加时钟信息。这也要求发送端和接收端的速率、停止位、奇偶校验位等都要相同&#xff0c;通信才能成功。 1.1 UART 通信协议 一个典型的 UART 帧开始…

3.9多线程

一.常见锁策略1.悲观锁 vs乐观锁体现在处理锁冲突的态度①悲观锁:预期锁冲突的概率高所以做的工作更多,付出的成本更多,更低效②乐观锁:预期锁冲突的概率低所以做的工作少,付出的成本更低,更搞笑2.读写锁 vs 普通的互斥锁①普通的互斥锁,只有两个操作 加锁和解锁只有两个线程针…

奇点云DataSimba发版全解析:“企业级”版本升级,提供最佳组合

近日&#xff0c;奇点云发布数据云产品商业化版本的全新升级&#xff1a;DataSimba&#xff08;数据云平台&#xff09;提供极速版、专业版、旗舰版、红旗版&#xff0c;可靠性、可用性、可服务性再进阶&#xff0c;四大版本满足不同企业选择。 「乐高式DIY」or「最佳组合」&am…

推荐几款主流好用的远程终端连接管理软件

一、介绍 远程终端连接管理软件是管理服务器、虚拟机等远程计算机系统不可或缺的工具之一&#xff0c;它可以通过网络连接到另一台计算机&#xff0c;以执行命令、编辑文件或进行其他管理任务&#xff0c;下面我将为大家介绍几款主流好用的远程终端连接管理软件&#xff0c;并…

Navisworks编辑材质和Revit快速切换材质问题

一、如何在Navisworks2016中编辑材质 初次使用NW2016-2017时发现&#xff0c;原来用于创建编辑材质的小地球不见了&#xff0c;如图1所示&#xff0c;在各大技术群里求助没有回应&#xff0c;度娘搜索也总是摇头。 经过仔细排查可能出现的地方&#xff0c;终于找到了可以编辑材…

数仓生态圈辅助工具之Sqoop导入导出数据和Oozie工作流调度

数仓生态圈辅助工具 知识点01&#xff1a;Apache Sqoop介绍、工作机制 Sqoop介绍 sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传送数据”的工具。 导入数据&#xff1a;MySQL&#xff0c;Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统&#xff1b; 导出数…

案例14-课程推送页面逻辑整理--vue

目录一级目录二级目录三级目录一、背景介绍二、问题分析问题1&#xff1a;逻辑边界不清晰&#xff0c;封装意识缺乏问题问题2&#xff1a;展示效果上的问题三、解决过程问题一 代码结构混乱问题解决问题二 代码结构混乱问题解决问题三 展示效果上的细微问题四、总结一级目录 二…

JVM(学习原因,虚拟机,作用,位置,组成,各部分用途,执行流程,架构类型)

JVM概述 这里写目录标题JVM概述1.1为什么学习 JVM1.2虚拟机1.3JVM 作用1.4JVM的位置1.5JVM组成1.6各个组成部分的用途1.7JVM代码的执行流程1.8JVM架构类型1.1为什么学习 JVM 中高级程序员必备技能 项目管理,性能调优 1.2虚拟机  所谓虚拟机&#xff08;Virtual Machine&a…

Linux基础命令-ss显示socket信息

Linux基础命令-netstat显示网络状态 ss 一. 命令介绍 先使用手册查看命令介绍信息 NAME ss - another utility to investigate sockets DESCRIPTION ss is used to dump socket statistics. It allows showing information similar to netstat. It can display more TCP and …

Flink从入门到精通系列(一)

1、Flink概述 Apache Flink 是一个框架和分布式处理引擎&#xff0c;用于在&#xff0c; 无边界和有边界数据流上进行有状态的计算 &#xff0c;Flink 能在所有常见集群环境中运行&#xff0c;并能以内存速度和任意规模进行计算。 Apache Flink 功能强大&#xff0c;支持开发…

使用自定义数据绘制脑地形矩阵图

最近做数据处理,想画点自己想要的图,但是找遍了各种库,都没有一个函数可以实现我想要的效果,所以关机时刻还得靠自己啊,自己动手丰衣足食,记录一下实现过程,方便以后查阅。 使用自定义数据绘制脑地形矩阵图 对于处理后的数据我想实现下图所示的效果,以矩阵的形式排列脑…

PyQt5可视化 7 饼图和柱状图实操案例 ②建表建项目改布局

目录 一、数据库建表 1 建表 2 插入数据 3 查看表数据 二、建立项目 1 新建项目 2 appMain.py 3 myMainWindow.py 4 myChartView.py 2.4.1 提升的后果 2.4.2 QmyChartView类说明 2.4.3 添加代码 三、修改myMainWindow.py程序&#xff0c;添加功能 1 打开数据库 …

第十届省赛——8人物相关性分析(数组)

题目&#xff1a;试题 H: 人物相关性分析时间限制: 1.0s 内存限制: 512.0MB 本题总分&#xff1a;20 分【问题描述】小明正在分析一本小说中的人物相关性。他想知道在小说中 Alice 和 Bob有多少次同时出现。更准确的说&#xff0c;小明定义 Alice 和 Bob“同时出现”的意思是&a…

微小目标识别研究(2)——基于K近邻的白酒杂质检测算法实现

文章目录实现思路配置opencv位置剪裁实现代码自适应中值滤波实现代码动态范围增强实现代码形态学处理实现代码图片预处理效果计算帧差连续帧帧差法原理和实现代码实现代码K近邻实现基本介绍实现代码这部分是手动实现的&#xff0c;并没有直接调用相关的库完整的代码——调用ope…