FISCO-BCOS / go-sdk

golang SDK of FISCO BCOS
Apache License 2.0
72 stars 57 forks source link

go-sdk空跑cpu200 #260

Closed Keyon11 closed 6 months ago

Keyon11 commented 7 months ago

环境: 分支:master @ commitID:0a84faba138b089b8c88c8046bc3933f6a55cadd 问题:client.DialContext(context.Background(), config)之后,cpu空转200%。 重现方式:修改 v3/examples/hello_world/manual/main.go, 在client.DialContext(context.Background(), config) 之后添加time.Sleep。使用top查看进程占用cpu情况。 问题原因:

  1. v3/client/connection.go:184 processTransactionResponses死循环不带sleep导致cpu空转占用一个核。建议协议之间通信使用chan交互
  2. v3/client/connection.go:169 csdk.NewSDK 执行即空转占用一个核,具体原因不明。

建议: 建议一个connection一个chan+协程池,而不是每个请求使用一个chan来处理异步。可以参照bcos-cpp-sdk的方式。

bxq2011hust commented 7 months ago

v3/client/connection.go:184 processTransactionResponses 这里确实可以优化下 建议也很不错,欢迎提个PR @Keyon11