Hyperledger TPS

问题描述 投票:0回答:1

我正在做一个基于Hyperledger区块链的概念验证(PoC),并将其与医疗保健数据相结合(这是一个学术项目)。

我按照本教程:https://github.com/IBM/BlockchainNetwork-CompositeJourney

由于我是Windows用户,并且我的SSD上没有可用空间来容纳带有所有分类帐的Linux Ubuntu双启动,所以我决定在具有所有VM文件的“Oracle VM VirtualBox”上安装所有POC(* .vdi)托管在我的辅助硬盘驱动器上,这是一个硬盘驱动器,而不是固态硬盘。

这是一个棘手的部分,“Oracle VM VirtualBox”软件本身完全安装在我的SSD中,但所有POC的Linux VM都在HDD上,这是我的第二个硬盘驱动器。

到目前为止,我已经让Peer在我的VM上运行,并且已经将数据保存在其上。我的问题/担忧是关于它的表现......

我已经在python中创建了一段代码来对其进行基准测试,每次事务我得到2到3秒的结构响应,我认为这是一个极低的TPS(每秒事务数)对吗?

我做错什么了吗?我一步一步地按照教程,它正在工作,但极端低性能的TPS。

可能是因为我使用Oracle VM处理HDD?

如果我把它全部直接在带有Linux的SSD上运行,我会获得更好的TPS吗?

 //composer-rest-server endpoint
 url = 'http://localhost:3000/api/Member'

 start = time.time()
 response = requests.post(url, headers=headers, data=data)
 end = time.time()
 timeTotal = (end - start)
performance hyperledger-fabric hyperledger
1个回答
1
投票

低TPS存在很多因素。要在Hyperledger Fabric中进行事务处理,需要经过多个过程。

1)创建交易提议并将其发送给所有同行认可。例如,如果您有下一个政策认可:

AND('Org1MSP','Org2MSP')  

每个组织的至少一个对等方需要认可交易,对于您发出的每个对等方,他们将在容器内执行交易并检查其是否有效,如果有效,则它们将以状态200响应(这是每个人,个人)。

2)下一步是将交易提议发送给订货人,如果单独订购者的共识将快于kafka-orderer共识(You can check how it works here)。订货人将创建该块并等待几秒钟,然后将其发送给每个orgs ancho同行。这几秒钟它是configtx.yaml文件中一个非常重要的参数,这是BatchTimeout,我将引用hyperledger结构官方网站的定义:

批量超时。在切割块之前第一个事务到达其他事务之后等待的时间量。减小此值将改善延迟,但减少太多可能会因为不允许块填充其最大容量而降低吞吐量。

Here you can read more.

编辑:默认情况下,batchTimeout值为2sec

3)现在,orderer将块发送给所有ancho对等体,并且它们将块发送给它们自己组织的所有对等体,提交块并更新分类账的状态。

当然,如果您的计算机性能较低,此过程将会更慢。


2
投票

通常,织物中的TPS取决于各种因素。

  1. 认可政策(认可节点和政策的数量)
  2. 当前状态数据库(Leveldb,Couchdb)
  3. 资源分配(硬件配置)
  4. 块大小(批量大小和批处理时间(在configtx.yaml文件中定义))和更多因素

网络可以处理的事务数和事务延迟是两回事。发送事务和获取响应之间的时间是延迟执行的最大事务数量是TPS

© www.soinside.com 2019 - 2024. All rights reserved.