kitex
kitex copied to clipboard
perf/fix: reuse rpcinfo to improve performance
What type of PR is this?
perf/fix
What this PR does / why we need it (en: English/zh: Chinese):
en: reuse rpcinfo to improve performance in long connection and gRPC scene, and fix the dirty data problem of rpcinfo multiplexing in netpollmux scene. zh: 在长连接和gRPC场景下复用rpcinfo来提高性能,修复多路复用场景下rpcinfo复用导致的脏数据问题。
Which issue(s) this PR fixes:
补充性能压测结果:
Buffered:
| commit | TPS | TP99 | TP999 | Server CPU AVG | Client CPU AVG |
|---|---|---|---|---|---|
| 9d86568 | 206608 | 1.08ms | 2.86ms | 386.24 | 527.54 |
| d83b2557(develop) | 200767 | 1.10ms | 2.75ms | 385.95 | 510.63 |
Framed:
| commit | TPS | TP99 | TP999 | Server CPU AVG | Client CPU AVG |
|---|---|---|---|---|---|
| 9d86568 | 208434 | 1.07ms | 2.97ms | 387.62 | 528.56 |
| d83b2557(develop) | 202327 | 1.08ms | 2.83ms | 387.67 | 522.14 |
TTheader:
| commit | TPS | TP99 | TP999 | Server CPU AVG | Client CPU AVG |
|---|---|---|---|---|---|
| 9d86568 | 190920 | 1.17ms | 2.82ms | 388.25 | 507.91 |
| d83b2557(develop) | 183560 | 1.19ms | 2.84ms | 389.18 | 492.30 |
FramedMux:
| commit | TPS | TP99 | TP999 | Server CPU AVG | Client CPU AVG |
|---|---|---|---|---|---|
| 9d86568 | 289278 | 1.12ms | 1.41ms | 362.69 | 624.50 |
| d83b2557(develop) | 294895 | 1.10ms | 1.37ms | 361.29 | 619.29 |
GRPC:
| commit | TPS | TP99 | TP999 | Server CPU AVG | Client CPU AVG |
|---|---|---|---|---|---|
| 9d86568 | 116903 | 2.27ms | 2.88ms | 386.33 | 605.09 |
| d83b2557(develop) | 118109 | 2.25ms | 2.83ms | 386.12 | 614.33 |
多路复用和GRPC场景增加了rpcinfo重置,吞吐分别下降1.7%、1%