Skip to content

Commit e427a8d

Browse files
committed
docs: describe multi-dimensional performance matrix
1 parent fe94b78 commit e427a8d

1 file changed

Lines changed: 57 additions & 15 deletions

File tree

‎docs/PERFORMANCE.md‎

Lines changed: 57 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,76 @@
11
# RPC Performance History
22

3-
该文档由 CI 持续维护,用于记录 Java-RPC 真实端到端调用链路的性能快照。
3+
该文档由 CI 持续维护,用于记录 Java-RPC 真实端到端调用链路在不同协议、序列化器、注册中心和网络条件下的性能数据。
44

5-
> 这些数据来自 GitHub Hosted Runner,适合观察趋势和发现明显回归,不作为绝对性能承诺或硬性合并门槛。测试固定使用 Local Registry + Netty + Kryo,并保持固定 warmup、请求量和并发度以提高不同运行之间的可比性。
5+
> 数据来自 GitHub Hosted Runner,适合比较实现差异、观察趋势和发现明显回归,不作为绝对性能承诺或硬性合并门槛。CI 使用正交矩阵:一次只改变一个主要变量,避免全笛卡尔积既昂贵又难解释。
66
7-
## 测试配置
7+
## CI 性能矩阵
88

9-
- Warmup:100 次 RPC
10-
- 顺序阶段:200 次 RPC,并发度 1
11-
- 并发阶段:1000 次 RPC,并发度 16
12-
- Registry:`local`
13-
- Protocol:`netty`
14-
- Serializer:`kryo`
15-
- 记录指标:吞吐、Avg、P50、P95、P99、Max,以及 Client / Server 内置 metrics
9+
### 协议
10+
11+
固定 `Local Registry + Kryo + loopback`:
12+
13+
- `netty`
14+
- `http`
15+
- `http2`
16+
- `grpc`
17+
18+
### 序列化
19+
20+
固定 `Local Registry + Netty + loopback`:
21+
22+
- `kryo`
23+
- `java`
24+
- `json`
25+
- `protobuf`
26+
27+
### 注册中心
28+
29+
固定 `Netty + Kryo + loopback`:
30+
31+
- `local`
32+
- `nacos`(CI 启动真实 `nacos/nacos-server:v2.5.4` Docker)
33+
34+
### 网络
35+
36+
固定 `Local Registry + Netty + Kryo`,通过 Linux `tc netem` 作用于 `lo`:
37+
38+
- 原始 loopback(baseline)
39+
- `delay 20ms ± 5ms` + normal jitter
40+
- `delay 10ms ± 2ms` + `loss 0.2%`
41+
- `delay 5ms` + `rate 1mbit`
42+
43+
> `tc` 场景的目的不是模拟某个运营商的精确 SLA,而是稳定制造 RTT、抖动、丢包和带宽约束,观察 RPC 的 P95/P99、吞吐和 timeout 行为。由于当前性能用例 payload 较小,带宽场景主要用于发现排队/协议开销趋势;如果后续加入大对象 RPC,再单独增加大 payload 网络矩阵。
44+
45+
## 记录指标
46+
47+
每个场景都会记录:
48+
49+
- 顺序调用与并发调用的 Throughput
50+
- Avg / P50 / P95 / P99 / Max latency
51+
- Client / Server 的 total、success、failed、timeout、active
52+
- Client / Server 内置 metric 的平均与最大耗时
53+
- Registry / Protocol / Serializer / Network profile
54+
- Java / CPU / Runner 信息
55+
56+
PR CI 会执行完整矩阵作为验证;只有 `main` CI 全绿后才自动把矩阵结果追加到本文档。
1657

1758
## 历史记录
1859

19-
### PR #11 CI 基线
60+
### PR #11 CI 单一基线(矩阵启用前)
2061

2162
- Commit: `281d526ebe6ccd0e970453fc9094b85bf08cfe96`
2263
- Java: `17.0.20.1`
2364
- CPU visible to JVM: `4`
65+
- Registry / Protocol / Serializer: `local / netty / kryo`
66+
- Network: loopback
2467

2568
| Phase | Requests | Concurrency | Throughput req/s | Avg ms | P50 ms | P95 ms | P99 ms | Max ms |
2669
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
2770
| sequential | 200 | 1 | 482.033 | 2.066 | 1.535 | 4.578 | 6.195 | 9.340 |
2871
| concurrent | 1000 | 16 | 1537.520 | 10.250 | 9.376 | 17.876 | 22.806 | 27.916 |
2972

30-
#### Framework metrics
73+
<details><summary>Framework metrics</summary>
3174

3275
| Phase | Side | Total | Success | Failed | Timeout | Active | Metric avg ms | Metric max ms |
3376
| --- | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
@@ -36,12 +79,12 @@
3679
| concurrent | CLIENT | 1000 | 1000 | 0 | 0 | 0 | 9.692 | 25.216 |
3780
| concurrent | SERVER | 1000 | 1000 | 0 | 0 | 0 | 0.661 | 12.092 |
3881

82+
</details>
83+
3984
---
4085

4186
## CI Snapshot — 2026-09-14 09:14:08 UTC — `c525edb`
4287

43-
44-
4588
- Commit: `c525edb58daffb37267b544e5928f0fb4db5ab49`
4689
- Protocol: `netty`
4790
- Serializer: `kryo`
@@ -62,4 +105,3 @@
62105
| sequential | SERVER | 200 | 200 | 0 | 0 | 0 | 0.190 | 2.493 |
63106
| concurrent | CLIENT | 1000 | 1000 | 0 | 0 | 0 | 8.364 | 20.758 |
64107
| concurrent | SERVER | 1000 | 1000 | 0 | 0 | 0 | 0.791 | 5.687 |
65-

0 commit comments

Comments
 (0)