如何配置Fabric出块参数来达到“最大”TPS
文章目录
对于参数的了解
在讨论有关最大tps的问题之前,我们首先要了解Fabric出块的四个参数之间是如何工作的。
从结论上,Fabric会优先于PreferredMaxBytes,AbsoluteMaxBytes,MaxMessageCount这三个参数,最后是BatchTimeout。
避免落入batch timeout
我们以如下配置Probe发起对于Fabric的性能测试。
BatchTimeout:20
MaxMessageCount:320
AbsoluteMaxBytes:20
PreferredMaxBytes:20480
得到结果如下:
Chaincode | BatchTimeout | MaxMessageCount | AbsoluteMaxBytes | PreferredMaxBytes | TPS |
---|---|---|---|---|---|
sample | 20 | 320 | 20 | 20480 | 414.187180 |
从tape的log中,我们可以发现最后一个块实际上很大程度的影响了fabric的tps。
Time 5.89s Block 33 Tx 320
Time 5.98s Block 34 Tx 320
Time 6.04s Block 35 Tx 320
Time 6.09s Block 36 Tx 320
Time 24.14s Block 37 Tx 80
time="2020-12-11T09:27:48Z" level=info msg="Completed processing transactions."
tx: 10000, duration: 24.143673413s, tps: 414.187180
因此,这个发现表明,
推论一:我们最好不要依赖一个过大的batchtimeout值来触发fabric出块。
PreferredMaxBytes,AbsoluteMaxBytes,MaxMessageCount的关系
那么,PreferredMaxBytes,AbsoluteMaxBytes,MaxMessageCount三个参数之间如何相互影响?
我们以如下配置Probe发起对于Fabric的性能测试。
BatchTimeout:20
MaxMessageCount:10,20,40
AbsoluteMaxBytes:20
PreferredMaxBytes:4
得到结果如下:
Chaincode | BatchTimeout | MaxMessageCount | AbsoluteMaxBytes | PreferredMaxBytes | TPS |
---|---|---|---|---|---|
samp |