plugin icon indicating copy to clipboard operation
plugin copied to clipboard

mempool 模块处理交易瓶颈

Open caopingcp opened this issue 5 years ago • 3 comments

两核4G的虚拟机运行 chain33,mempool 模块处理交易的速度大概为 每秒1000多笔

测试方案:

  1. 使用 solo 共识,benchMode 设置为 true
  2. 使用发交易工具向节点发送交易,统计从构造交易并发送到回显交易哈希的时间
  3. 在不同于chain33运行的节点上(机器配置相同),启动一个进程发送交易,发送1万笔交易统计时间为 10 秒左右,solo 共识打包时间间隔也为 10 秒
  4. 在两个节点上分别启动进程发交易,发送1万笔交易统计时间均为 20 秒左右,solo 共识打包时间间隔为 10 秒
  5. 多个节点进行实验,结果也一致

交易处理速度跟 rpc 和 mempool 模块都有关系,推测瓶颈位于 mempool 模块

caopingcp avatar Aug 04 '20 09:08 caopingcp

单节点mempool发交易之前已经测试过的,主要耗时在于签名和验签,其他流程没发现明显问题

bysomeone avatar Aug 06 '20 05:08 bysomeone

测试对比

小米笔记本,solo模式,测试向mempool发送交易性能,以10s为统计时间

内部接口发送交易 (直接调用client相关接口 发送)

107515 135601 ns/op 28139 B/op 398 allocs/op

grpc 发送交易

84864 167136 ns/op 38344 B/op 583 allocs/op

json rpc 发送交易

51940 274422 ns/op 903478 B/op 587 allocs/op

内部接口发送交易 + 屏蔽签名验签

794376 25171 ns/op 13051 B/op 189 allocs/op

grpc 发送交易 + 屏蔽签名验签

352542 52363 ns/op 22693 B/op 372 allocs/op

json rpc发送交易 + 屏蔽签名验签

95557 171202 ns/op 885980 B/op 373 allocs/op

结论

json rpc和grpc均未做针对性优化,可见json rpc效率较低,大规模建议使用grpc发送交易

bysomeone avatar Aug 06 '20 08:08 bysomeone

2核4G的配置, 使用jsonrpc发交易的TPS在2500笔左右, 使用grpc发交易的TPS在3200笔左右。 稍有提升。

andyYuanFZM avatar Aug 17 '20 05:08 andyYuanFZM