Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mempool 模块处理交易瓶颈 #896

Open
caopingcp opened this issue Aug 4, 2020 · 3 comments
Open

mempool 模块处理交易瓶颈 #896

caopingcp opened this issue Aug 4, 2020 · 3 comments
Milestone

Comments

@caopingcp
Copy link
Contributor

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

测试方案:

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

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

@bysomeone
Copy link
Collaborator

bysomeone commented Aug 6, 2020

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

@bysomeone
Copy link
Collaborator

测试对比

小米笔记本,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发送交易

@andyYuanFZM
Copy link
Collaborator

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

@vipwzw vipwzw added this to the v1.66.0 milestone Jan 28, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants