GitHub user lizining1231 edited a comment on the discussion: [OSPP 2026] Triple
协议性能分析与优化
这里是一份初步的性能基准测试报告:
# Dubbo-Go grpc协议 基准测试报告
## 目录
- 一、测试环境
- 二、测试配置
- 三、测试数据
- 四、服务端内存分配(B/op、allocs/op)测试数据
- 五、特定场景测试数据摘要
- 六、性能优化
- 七、许可证
## 一、测试环境
- **Go 版本**: 1.25.6
- **Java 版本**: 17.0.19
- **Maven**: 3.9.16
- **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 / gRPC / Dubbo-Java
- **预热时间**: 10s
- **测试时长**: 每个用例 60s
- **轮次**: 5 轮 × 24场景取中位数
## 二、测试配置
| 参数 | 值 |
| ---- | -------------------------- |
| 报文大小 | 128B / 1KiB / 16KiB / 1MiB |
| 序列化 | protobuf |
| 压缩 | none |
| 并发数 | 50 / 100 |
| 调用模式 | unary |
## 三、测试数据
### 1. 128 bytes 报文
#### QPS(每秒请求数)
| 并发数 | dubbo-go | grpc | dubbo-java |
| --- | -------- | -------- | ---------- |
| 50 | 4,425.4 | 40,561.9 | 10,625.8 |
| 100 | 4,537.6 | 47,064.7 | 10,667.0 |
#### P99 延迟 (ms)
| 并发数 | dubbo-go | grpc | dubbo-java |
| --- | -------- | ---- | ---------- |
| 50 | 19.56 | 3.58 | 6.74 |
| 100 | 33.29 | 5.54 | 12.23 |
### 2. 1024 bytes 报文
#### QPS(每秒请求数)
| 并发数 | dubbo-go | grpc | dubbo-java |
| --- | -------- | -------- | ---------- |
| 50 | 3,597.7 | 33,508.7 | 8,870.0 |
| 100 | 3,670.8 | 42,400.3 | 8,919.1 |
#### P99 延迟 (ms)
| 并发数 | dubbo-go | grpc | dubbo-java |
| --- | -------- | ---- | ---------- |
| 50 | 21.51 | 4.09 | 7.79 |
| 100 | 42.96 | 6.80 | 14.07 |
### 3. 16384 bytes 报文
#### QPS(每秒请求数)
| 并发数 | dubbo-go | grpc | dubbo-java |
| --- | -------- | -------- | ---------- |
| 50 | 1,980.3 | 11,882.1 | 4,772.9 |
| 100 | 1,829.6 | 12,852.9 | 4,819.3 |
#### P99 延迟 (ms)
| 并发数 | dubbo-go | grpc | dubbo-java |
| --- | -------- | ----- | ---------- |
| 50 | 43.24 | 10.07 | 21.03 |
| 100 | 93.16 | 16.28 | 32.91 |
### 4. 1048576 bytes 报文
#### QPS(每秒请求数)
| 并发数 | dubbo-go | grpc | dubbo-java |
| --- | -------- | ----- | ---------- |
| 50 | 122.9 | 284.5 | 288.4 |
| 100 | 119.4 | 274.0 | 293.5 |
#### P99 延迟 (ms)
| 并发数 | dubbo-go | grpc | dubbo-java |
| --- | -------- | ------ | ---------- |
| 50 | 1,074.68 | 261.09 | 279.11 |
| 100 | 2,400.09 | 511.09 | 697.37 |
## 四、服务端内存分配(B/op、allocs/op)测试数据
### 1. 128 bytes 报文
#### B/op(每请求分配字节)
| 并发数 | dubbo-go | grpc | dubbo-java |
| --- | -------- | ----- | ---------- |
| 50 | 23,307 | 5,899 | 20,345 |
| 100 | 22,976 | 5,895 | 20,342 |
#### allocs/op(每请求分配次数)
| 并发数 | dubbo-go | grpc |
| --- | -------- | ---- |
| 50 | 151.5 | 79.4 |
| 100 | 151.5 | 79.3 |
### 2. 1024 bytes 报文
#### B/op(每请求分配字节)
| 并发数 | dubbo-go | grpc | dubbo-java |
| --- | -------- | ----- | ---------- |
| 50 | 27,659 | 8,847 | 23,160 |
| 100 | 27,317 | 8,844 | 23,163 |
#### allocs/op(每请求分配次数)
| 并发数 | dubbo-go | grpc |
| --- | -------- | ---- |
| 50 | 153.1 | 79.6 |
| 100 | 153.1 | 79.4 |
### 3. 16384 bytes 报文
#### B/op(每请求分配字节)
| 并发数 | dubbo-go | grpc | dubbo-java |
| --- | -------- | ------ | ---------- |
| 50 | 123,700 | 60,638 | 86,883 |
| 100 | 113,426 | 60,625 | 86,922 |
#### allocs/op(每请求分配次数)
| 并发数 | dubbo-go | grpc |
| --- | -------- | ---- |
| 50 | 161.2 | 81.7 |
| 100 | 164.5 | 81.4 |
### 4. 1048576 bytes 报文
#### B/op(每请求分配字节)
| 并发数 | dubbo-go | grpc | dubbo-java |
| --- | --------- | --------- | ---------- |
| 50 | 3,124,173 | 3,176,880 | 4,417,419 |
| 100 | 3,085,140 | 3,173,124 | 4,413,321 |
#### allocs/op(每请求分配次数)
| 并发数 | dubbo-go | grpc |
| --- | -------- | ----- |
| 50 | 407.4 | 119.7 |
| 100 | 406.9 | 104.9 |
## 五、特定场景测试数据摘要
### 1. 128B × 100 并发场景三端表现
| 指标 | dubbo-go | grpc | dubbo-java |
| --------- | -------- | -------- | ---------- |
| QPS | 4,537.6 | 47,064.7 | 10,667.0 |
| P99 (ms) | 33.29 | 5.54 | 12.23 |
| B/op | 22,976 | 5,895 | 20,342 |
| allocs/op | 151.5 | 79.3 | N/A |
### 2. 1MiB × 50/100 并发场景三端表现
**1Mib × 50 并发**
| 指标 | dubbo-go | grpc | dubbo-java |
| --------- | --------- | --------- | ---------- |
| QPS | 122.9 | 284.5 | 288.4 |
| P99 (ms) | 1,074.68 | 261.09 | 279.11 |
| B/op | 3,124,173 | 3,176,880 | 4,417,419 |
| allocs/op | 407.4 | 119.7 | N/A |
**1Mib × 100 并发**
| 指标 | dubbo-go | grpc | dubbo-java |
| --------- | --------- | --------- | ---------- |
| QPS | 119.4 | 274.0 | 293.5 |
| P99 (ms) | 2,400.09 | 511.09 | 697.37 |
| B/op | 3,085,140 | 3,173,124 | 4,413,321 |
| allocs/op | 406.9 | 104.9 | N/A |
## 六、性能优化
### Dubbo-Go 客户端优化
参照社区已有benchmark,为获得最佳性能,Dubbo-Go 客户端使用了以下优化配置:
| 配置项 | 说明 |
| -------------------------- | ---------------- |
| `WithClientNoCheck()` | 跳过服务检查,减少不必要的开销 |
| `MaxCallRecvMsgSize: 16MB` | 最大接收消息大小,支持大报文测试 |
| `MaxCallSendMsgSize: 16MB` | 最大发送消息大小,支持大报文测试 |
### Dubbo-Go 服务端优化
参照社区已有benchmark,服务端配置了以下优化参数:
| 配置项 | 说明 |
| ---------------------------------- | -------- |
| `WithMaxServerRecvMsgSize("16MB")` | 最大接收消息大小 |
| `WithMaxServerSendMsgSize("16MB")` | 最大发送消息大小 |
## 七、许可证
Apache License 2.0
GitHub link:
https://github.com/apache/dubbo-go/discussions/3673#discussioncomment-18071388
----
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]