错误:以高速率触发交易时,无法在截止日期之前连接

时间:2019-04-18 11:20:48

标签: node.js hyperledger-fabric hyperledger

我正在尝试在Hyperledger Fabric v1.2上执行性能测试。使用fabcar链码建立网络。交易到达率以50 RPS为单位。使用Node JS应用程序接受交易请求。事务通过使用this代码在分类帐中添加新变量来执行putState操作。

  • 已使用共识:独奏
  • 节点数:4(订购者和所有对等点均处于启用状态 不同的虚拟机)
  • 分类帐:CouchDB

在较低的RPS(0-20)下,所有事务均成功通过。将交易到达率提高到50后,总交易中约有50%失败并出现错误

d = {}                         # empty dict

s = 'blah'                     # str
d[s] = []                      # empty list with the name of the str, blah = []

d[s].append("hello there!")    # appending to `blah`
print(d[s])

此错误实际上是什么意思?为什么客户无法将认可的交易发送给订购者? 大约20%的用户失败并出现以下错误

Transaction proposal was good
Successfully sent Proposal and received ProposalResponse: Status - 200, message - ""
error: [Remote.js]: Error: Failed to connect before the deadline
error: [Orderer.js]: Orderer grpc://x.x.x.x:7050 has an error Error: Failed to connect before the deadline
error: [client-utils.js]: sendPeersProposal - Promise is rejected: Error: 
Failed to connect before the deadline

根据不同的研究论文,Hyperledger Fabric必须能够以高达2000的速率处理请求,为什么会给出这样的结果?

1 个答案:

答案 0 :(得分:0)

通过使用fabric-samples存储库中的调用代码,我遇到了同样的问题。我通过更改订单承诺链来解决了这个问题。

我所做的如下:

return checkUser(this.user)
.then(() => return channel.sendTransactionProposal(request))
.then((results) => checkPrposal(results))
.then((results) => submitTrasaction(results))
.then(() => connectEventHub())