GitHub user lizining1231 added a comment to the discussion: [OSPP 2026] Triple
协议性能分析与优化
triple-unary fastpath已落地,多场景收益超出预期(预期~10%),但存在单个场景(1Mib 50并发)小幅度负收益,性能对比如下:
# Dubbo-Go Triple 协议 性能对比报告
## 基准测试报告
### 测试环境
- **Go 版本**: 1.25.6
- **OS**: Ubuntu 24.04.1 LTS (WSL2, Linux 6.6.87)
- **CPU**: Intel Core i7-10750H @ 2.60GHz, 6 核 12 线程
- **内存**: 7.6 GiB
- **测试框架**: Dubbo-Go(Triple 协议路径)
- **预热时间**: 10s
- **测试时长**: 每个用例 60s
- **轮次**: 3 轮/场景,取中位数
### 测试配置
| 参数 | 值 |
| ---- | ------------------------------------- |
| 报文大小 | 128B / 1KiB / 16KiB / 1MiB |
| 序列化 | protobuf |
| 压缩 | none(消息级)/ 响应 gzip(HTTP 层默认) |
| 并发数 | 50 / 100 |
| 调用模式 | unary |
| 对照项 | duplex(io.Pipe 原路径) / unary fast path |
### 128 bytes 报文
#### QPS(每秒请求数)
| 并发数 | duplex | fastpath | 提升 |
| --- | ------- | -------- | -------- |
| 50 | 5,329.3 | 6,997.9 | +31.3% ↑ |
| 100 | 5,409.2 | 6,024.1 | +11.4% ↑ |
#### P99 延迟 (ms)
| 并发数 | duplex | fastpath | 提升 |
| --- | ------ | -------- | -------- |
| 50 | 15.99 | 12.67 | -20.8% ↑ |
| 100 | 30.58 | 29.74 | -2.7% ↑ |
> ↑ 为正收益
### 1024 bytes 报文
#### QPS(每秒请求数)
| 并发数 | duplex | fastpath | 提升 |
| --- | ------- | -------- | -------- |
| 50 | 4,300.3 | 5,196.4 | +20.8% ↑ |
| 100 | 4,368.5 | 5,605.8 | +28.3% ↑ |
#### P99 延迟 (ms)
| 并发数 | duplex | fastpath | 提升 |
| --- | ------ | -------- | -------- |
| 50 | 20.40 | 18.22 | -10.7% ↑ |
| 100 | 37.48 | 26.95 | -28.1% ↑ |
### 16384 bytes 报文
#### QPS(每秒请求数)
| 并发数 | duplex | fastpath | 提升 |
| --- | ------- | -------- | -------- |
| 50 | 2,584.2 | 2,871.6 | +11.1% ↑ |
| 100 | 2,428.2 | 2,815.7 | +16.0% ↑ |
#### P99 延迟 (ms)
| 并发数 | duplex | fastpath | 提升 |
| --- | ------ | -------- | -------- |
| 50 | 37.28 | 30.90 | -17.1% ↑ |
| 100 | 81.24 | 69.07 | -15.0% ↑ |
### 1048576 bytes (1MiB) 报文
#### QPS(每秒请求数)
| 并发数 | duplex | fastpath | 提升 |
| --- | ------ | -------- | ------- |
| 50 | 101.3 | 101.7 | +0.4% ↑ |
| 100 | 104.3 | 114.4 | +9.8% ↑ |
#### P99 延迟 (ms)
| 并发数 | duplex | fastpath | 提升 |
| --- | -------- | -------- | ------- |
| 50 | 1,430.17 | 1,479.12 | +3.4% ↓ |
| 100 | 3,179.88 | 2,874.32 | -9.6% ↑ |
## 性能优化
### Dubbo-Go 客户端优化(Triple 协议路径)
| 配置项 | 说明
|
| -------------------------- | ------------------------------------------------
|
| `WithClientNoCheck()` | 跳过服务检查,减少不必要的开销
|
| `MaxCallRecvMsgSize: 16MB` | 最大接收消息大小,支持大报文测试
|
| `MaxCallSendMsgSize: 16MB` | 最大发送消息大小,支持大报文测试
|
| `WithUnaryFastPath()` | 启用 unary fast path(tripleClient.NewConn 分支,默认关闭)
|
### Dubbo-Go 服务端优化
服务端配置了以下优化参数:
| 配置项 | 说明 |
| ---------------------------------- | -------- |
| `WithMaxServerRecvMsgSize("16MB")` | 最大接收消息大小 |
| `WithMaxServerSendMsgSize("16MB")` | 最大发送消息大小 |
## benchstat显著性检验 count -10
```bash
goos: linux
goarch: amd64
pkg: dubbo.apache.org/dubbo-go/v3/protocol/triple/triple_protocol
cpu: Intel(R) Core(TM) i7-10750H CPU @ 2.60GHz
│ duplex10_b.txt │ fastpath10_b.txt │
│ sec/op │ sec/op vs base │
Unary/128B-12 163.6µ ± 21% 121.3µ ± 25% -25.85% (p=0.003 n=10)
Unary/1024B-12 157.4µ ± 22% 113.0µ ± 18% -28.25% (p=0.002 n=10)
Unary/16384B-12 202.0µ ± 16% 182.9µ ± 31% ~ (p=0.393 n=10)
Unary/2MiB-12 6.891m ± 12% 7.740m ± 26% ~ (p=0.796 n=10)
geomean 435.1µ 373.2µ -14.24%
```
可得,
| 报文 | duplex (sec/op) | fastpath (sec/op) | 变化 | p 值 | 显著性 |
| --- | --- | --- | --- | --- | --- |
| 128B | 163.6µs | 121.3µs | -25.85% | 0.003 | 显著 |
| 1KiB | 157.4µs | 113.0µs | -28.25% | 0.002 | 显著 |
| 16KiB | 202.0µs | 182.9µs | -9.4% | 0.393 | 不显著 |
| 2MiB | 6.891ms | 7.740ms | +12.3% | 0.796 | 不显著 |
| geomean | 435.1µs | 373.2µs | -14.24% | - | 整体正收益 |
## 许可证
Apache License 2.0
GitHub link:
https://github.com/apache/dubbo-go/discussions/3673#discussioncomment-18154120
----
This is an automatically sent email for [email protected].
To unsubscribe, please send an email to:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]