超级账本TPS

时间:2019-02-15 03:00:28

标签: performance hyperledger-fabric hyperledger

我正在基于Hyperledger区块链进行概念验证(PoC),并将其与医疗数据集成(这是一个学术项目)。

我遵循了本教程:https://github.com/IBM/BlockchainNetwork-CompositeJourney

由于我是Windows用户,并且我的SSD上没有剩余空间来容纳Linux Ledual双重引导以及所有分类帐内容,因此我决定在具有所有VM的“ Oracle VM VirtualBox”上安装所有POC我的辅助硬盘驱动器上的文件(* .vdi)是HDD,而不是SSD。

那是棘手的部分,“ Oracle VM VirtualBox”软件本身已完美安装在我的SSD中,但是具有所有POC的Linux VM在HDD(这是我的辅助硬盘驱动器)上。

到目前为止,我已经在我的VM上运行了Peer,并且已经在其上保留了数据。我的问题/担忧是关于它的性能...

我已经在python中创建了一个代码片段对其进行基准测试,并且每笔交易我在2到3秒之间获得了结构响应,我认为这是极低的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)

2 个答案:

答案 0 :(得分:3)

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

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

网络可以处理的事务数量和事务延迟是两件不同的事情。 发送交易和获得响应之间的时间是等待时间 正在执行的最大事务数以秒为单位

答案 1 :(得分:1)

TPS低有很多因素。要在Hyperledger Fabric中进行交易,需要经历几个过程。

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

AND('Org1MSP','Org2MSP')  

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

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

  

批处理超时。第一次交易后要等待的时间   在减少障碍之前到达其他交易。减少   此值将改善延迟,但将其降低太多可能   通过不允许块填充到最大来降低吞吐量   容量。

Here you can read more.

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

3)现在,订购者将把该块发送给所有ancho对等点,他们将把该块广播给自己组织的所有对等点,提交该块并更新分类帐的状态。

当然,如果您的计算机性能低下,则此过程将更加缓慢。