Fabric 测试报告 - 第1版
一、环境说明
1. 硬件环境
Fabric 节点部署在3台 8核 16G 的虚拟机上,使用 Raft 共识。
压测工具和适配器部署在 32核 256G 的主机上(10.10.144.96)。
96 到 114 大概是千兆带宽。
2. 软件环境
压测工具
压测工具使用 apache-ab,经过实践它的压力可以达到预期的要求。
ab的执行脚本(test.sh):
交易的参数内容为空(test.json):
适配器收到的请求压力大概 15000 次/s 。
适配器
适配器分两部分,网关和 Fabric 客户端。网关(Tomcat)的具体参数为:
Fabric 客户端创建了连接 peer1 和 order1 的通道,并且所有交易都会发给 peer1 和 order1(也就是说压力会直接给到 10.10.144.114 的虚拟机)。
3. 交易类型说明
目前 Fabric 节点的成块条件是 4000 笔交易或者 3 秒钟。
测试交易为循环转账交易,从账户 from1 到 to1 ,from2 到 to2,后面的数字依次增加。目前的配置是数字到 10000 后再回到 1 继续循环转账。转账金额固定为 1。
转账的签名使用 ed25519 加密。
二、测试前的硬件资源情况
114 (peer1、order1)
96(适配器、压测工具)
三、使用ab测试
测试前的块高度为 62,交易总数 20002(创建超级管理员1条 + 创建20000个账户 + 测试交易1条)。 具体数据可以查看附件:
测试结果:
测试结果的文本附件:
测试结束后的块高度:93,交易总数:120002。 数据附件:
TPS:1073 (ab自己统计的)
CTPS:1111
CTPS计算过程:
测试发起的第一笔交易为第63个块的第一笔交易,交易落块的时间戳为:1594437480229
测试发出的最后一笔交易为第93个块的最后一笔交易,落块时间戳为:1594437570132
一共 100000 笔交易,1594437570132 - 1594437480229 = 89903 ms
平均每秒钟落块 100000 / 90s = 1111 笔交易/s
硬件资源情况:
10.10.144.114 (Fabric 节点)
概览:
CPU使用率:
load数:
io:
带宽:
10.10.144.96 (压测工具、适配器)
概览:
CPU:
load数:
IO:
带宽:
四、使用 PolarBear 的第二次测试
PolarBear是一个第三方的测试工具,基于 Akka 提供的 Actor 模型,可以很好的提供足够的压力。PolarBear 可以可视化 TPS 的数据。
PloarBear 和适配器在同一个机器上,可能会稍微出现一点资源竞争的情况,TPS 比 ab 的结果略低。
测试参数:
TPS实时图:
带平均线的TPS图:
不确定导出的PDF效果如何,如果图片不清楚,可以访问在线文档,查看原图:https://www.yuque.com/docs/share/b4dc9623-c580-43b0-97af-dacfba006f05?# 《Fabric 测试报告 - 第1版》