Skip to content

Commit 4625962

Browse files
author
yiiewang
committed
archives: 添加3月文章集和索引更新
- 7.md, 7-1.md: 3月7日技术文章双篇 - 9.md: 3月9日工程实践记录 - 10.md: 3月10日技术分析报告 - 13.md: 3月13日AI Agent架构研究 - 14.md: 3月14日人机协作突破记录 - multi-agent-collaboration.md: 多Agent协作专题研究 - 更新博客索引的分类结构和最新文章列表 - 添加博客写作规范指南和完善页面排版
1 parent 0f86cc9 commit 4625962

6 files changed

Lines changed: 2304 additions & 0 deletions

File tree

docs/blog/posts/2026/03/10.md

Lines changed: 335 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,335 @@
1+
---
2+
date: 2026-03-10
3+
draft: true
4+
authors:
5+
- cloaks
6+
categories:
7+
- DevOps
8+
tags:
9+
- ChainMaker
10+
- 性能测试
11+
- 分片
12+
- 跨分片
13+
comments: true
14+
description: 长安链 5% 跨分片转账性能压测结果分析,覆盖 TPS、成功率、区块链监控数据及瓶颈定位,与 0%/1% 基线对比评估跨分片开销的线性变化趋势。
15+
---
16+
17+
# 长安链 5% 跨分片转账压测报告
18+
19+
本文记录长安链在 5% 跨分片比例下的转账性能压测结果,与 0%/1% 基线对比评估跨分片开销的线性变化趋势。
20+
21+
<!-- more -->
22+
23+
## 测试概要
24+
25+
| 项目 | 内容 |
26+
|------|------|
27+
| 测试项目 | 5% 跨分片比例转账压测 |
28+
| 测试目的 | 验证中等跨分片比例下的性能表现,与 0%/1% 基线对比评估跨分片开销的线性变化趋势 |
29+
| 测试步骤 | 使用 100 个 sfc 压力进程向 150 分片发送数据,持续 10 分钟 |
30+
| 测试时间 | 2026-03-10 14:45:02 — 2026-03-10 15:21:35(发送 10m + 尾部处理 4m48s) |
31+
| 压力服务器 | 10.15.21.57(32 核) |
32+
| 分片服务器 | 10.15.21.154(32 核) |
33+
34+
!!! note "关于分片与链的关系"
35+
36+
本次测试部署 150 个分片,每个分片即为一条独立的链。区块链监控以链为维度采集数据,因此后文的分片性能详情以 chain 为单位呈现。
37+
38+
## 预期结果
39+
40+
| 指标 | 预期值 |
41+
|------|--------|
42+
| 单分片 TPS | ~10,000 |
43+
| 成功率 | ≥ 99.9% |
44+
| 性能衰减(vs 0% 基线) | ≤ 10% |
45+
| 尾部延迟 | 无明显积压 |
46+
| 资源占用 | CPU/内存/网络/IO 合理范围,无异常飙升 |
47+
| 区块打包 | 正常,无异常数据或空块 |
48+
49+
## 测试结论
50+
51+
!!! success "符合预期:整体满足百万 TPS 要求"
52+
53+
测试结果达到百万 TPS 性能目标,成功率 100.00%(零失败分片),相较 1% 测试中 2 个分片掉线的问题有明显改善。但尾部延迟从 3m24s 增加到 4m48s,交易池积压消化时间更长,反映出跨分片比例提升后后端处理压力增大。
54+
55+
### 关键指标对比
56+
57+
| 指标 | 0% 基线 | 1% 跨分片 | 5% 跨分片 | 变化(5% vs 1%) | 是否达标 |
58+
|------|---------|----------|----------|-----------------|----------|
59+
| 单分片 TPS | ~7,000 | ~7,054 | ~6,727 | **-4.6%** ||
60+
| 成功率 | ≥ 99.9% | 98.67% | **100.00%** | **+1.33pp**,零掉线 ||
61+
| 尾部延迟 | 无明显积压 | +3m 24s | **+4m 48s** | +1m 24s ||
62+
| 校准 TPS(聚合) | ~1,100,000 | ~1,056,989 | **~1,009,110** | **-4.5%** ||
63+
| 交易池峰值积压 || ~500,000 笔 | ~5,000 笔 | 大幅降低 ||
64+
65+
!!! tip "趋势分析"
66+
67+
从 0% → 1% → 5%,校准 TPS 呈线性下降趋势(1,100,000 → 1,056,989 → 1,009,110),每增加 1% 跨分片比例约衰减 ~1%。按此趋势外推,10% 跨分片预计校准 TPS ~960,000,仍可维持在百万量级附近。
68+
69+
### 瓶颈链路
70+
71+
```
72+
压力客户端 CPU 饱和(95%)→ 发压速率受限
73+
74+
分片服务器磁盘 IO 竞争 → 区块提交延迟
75+
76+
尾部消化 4m48s(较 1% 增加 1m24s)
77+
```
78+
79+
### 问题分析
80+
81+
1. **尾部延迟增加** — 发送 TPS(16,980)与实际 TPS(11,469)差距拉大(vs 1% 的 21,417/15,984),跨分片交易需要额外的分片间通信开销,导致后端处理速率进一步下降
82+
2. **压力服务器 CPU 饱和** — 峰值 ~95%,高于 1% 测试的 ~90%,跨分片交易构造和路由比纯片内交易消耗更多 CPU
83+
3. **发送 TPS 下降** — 16,980 vs 1% 的 21,417,降幅 20.7%,压力客户端 CPU 成为发压瓶颈
84+
4. **分片服务器磁盘 IO 持续偏高** — 跨分片交易产生额外的日志和状态写入
85+
86+
## 压测数据
87+
88+
| 指标 | 数值 |
89+
|------|------|
90+
| 总请求数 | 10,188,396 |
91+
| 成功请求 | 10,188,240 |
92+
| 失败请求 | 156 |
93+
| 成功率 | 100.00% |
94+
| 发送耗时 | 10m 0.03s |
95+
| 总耗时 | 14m 48.32s |
96+
| 发送 TPS | 16,979.81(总请求 / 发送耗时) |
97+
| 实际 TPS | 11,469.33(成功请求 / 总耗时) |
98+
| 校准 TPS | 1,009,109.53 |
99+
100+
!!! info "指标说明"
101+
102+
- **发送 TPS** = 总请求数 / 发送耗时,衡量压力客户端的发压速率
103+
- **实际 TPS** = 成功请求 / 总耗时,衡量端到端吞吐能力(含尾部消化时间)
104+
- **校准 TPS** = 所有分片的聚合 TPS,用于计算单分片 TPS(校准 TPS / 150 ≈ 6,727)
105+
106+
## 区块链监控分析
107+
108+
### 交易池
109+
110+
| 指标 | 数值 |
111+
|------|------|
112+
| 峰值积压 | ~5,000 笔 |
113+
| 达峰时间 | ~14:50 |
114+
| 清空时间 | ~15:10 |
115+
| 尾部消化耗时 | ~20 分钟(14:50 → 15:10) |
116+
117+
- 交易池在 14:45 开始增长,~14:50 达到 ~5,000 笔峰值
118+
- 峰值后缓慢下降,~15:10 基本清空
119+
- 相较 1% 测试峰值 50 万笔大幅降低,交易流转更加平稳
120+
121+
### 区块数据
122+
123+
- 各分片累计交易量增长曲线基本一致,分片负载较均衡
124+
- 区块高度从约 200 增至 ~3,000+,各分片间差异不大,共识过程基本正常
125+
- 交易数累计达 ~1.75M per shard
126+
127+
### 各节点性能详情
128+
129+
| 指标 | 节点 1 | 节点 2 | 节点 3 | 节点 4 |
130+
|------|--------|--------|--------|--------|
131+
| 区块打包耗时 | 正常(0.0s) | 正常(0.0s) | 正常(0.0s) | 正常(0.0s) |
132+
| 区块提交耗时 | 正常(0.0s) | 正常(0.0s) | 正常(0.0s) | 正常(0.0s) |
133+
| 区块验证耗时 | 正常(0.0s) | 正常(0.0s) | 正常(0.0s) | 正常(0.0s) |
134+
| TPS 范围 | 4,000~8,000 | 4,000~8,000 | 4,000~8,000 | 4,000~8,000 |
135+
136+
| 指标 | 节点 1 | 节点 2 | 节点 3 | 节点 4 |
137+
|------|--------|--------|--------|--------|
138+
| 打包异常次数 | **902** | **297** | **146** | **97** |
139+
| 提交异常次数 | **176** | **1,078** | 0 | 0 |
140+
| 验证异常次数 | **2,763** | **606** | **719** | **491** |
141+
| 同步异常次数 | **824** | **2,981** | 0 | 0 |
142+
| 区块延迟时间 | **4,742** | **524** | **124** | **1,418** |
143+
| 区块验证时间 | **2,491** | **1,244** | **151** | 0 |
144+
| 区块同步时间 | **3,706** | **3,603** | **815** | **432** |
145+
146+
!!! warning "异常分析"
147+
148+
与 1% 测试异常集中在单节点不同,5% 测试中异常分布更加分散。节点 1 验证异常最高(2,763 次),节点 2 同步异常最高(2,981 次)。这表明跨分片比例提升后,各节点的负载更加均匀但整体异常面更广。
149+
150+
### TPS 曲线
151+
152+
- 各分片 TPS 在 14:45~14:55 期间波动在 4,000~8,000
153+
- 14:55 后 TPS 逐步下降(发送结束,进入尾部消化)
154+
- 峰值 TPS 较 1% 测试(5,000~15,000)有所收窄,波动更平稳
155+
156+
## 资源监控
157+
158+
### 分片服务器(10.15.21.154)
159+
160+
#### CPU
161+
162+
| 指标 | 数值 |
163+
|------|------|
164+
| 核心数 | 32 |
165+
| 聚合使用率峰值 | ~60%(14:45~14:55) |
166+
| 各节点 CPU 峰值 | ~80%(部分核心触顶) |
167+
| System Load 峰值 | ~2.94 |
168+
| CPU iowait | 压测期间偏高(峰值 ~10%) |
169+
170+
- 聚合 CPU ~60%,与 1% 测试持平
171+
- System Load ~2.94,远低于 1% 测试的 ~70,说明 CPU 调度压力大幅改善
172+
- CPU iowait 仍偏高,磁盘 IO 竞争仍然存在
173+
174+
#### 内存
175+
176+
| 指标 | 数值 |
177+
|------|------|
178+
| 聚合使用率 | ~30%~50% |
179+
| 各节点峰值 | ~50% |
180+
| 是否 OOM ||
181+
182+
- 内存压力较轻,与 1% 测试基本持平
183+
184+
#### 网络
185+
186+
| 指标 | 数值 |
187+
|------|------|
188+
| 下载速率峰值 | ~4 KB/s |
189+
| 上传速率峰值 | ~875 KB/s |
190+
191+
- 上传流量较 1% 测试(~341 KB/s)增长 ~156%,跨分片交易需要更多的分片间通信
192+
- 带宽仍在可控范围
193+
194+
#### 磁盘
195+
196+
| 指标 | 数值 |
197+
|------|------|
198+
| IOPS(读) | 聚合低位,偶发尖峰 |
199+
| IOPS(写) | 各节点峰值 ~300 k/s |
200+
| CPU disk IO 占比 | 峰值偶发飙升 |
201+
202+
- 写 IOPS 与 1% 测试持平(~300 k/s),磁盘 IO 仍是分片服务器的核心瓶颈
203+
- 跨分片交易增加了额外写入,但峰值未进一步恶化
204+
205+
#### TCP 连接
206+
207+
| 指标 | 数值 |
208+
|------|------|
209+
| ESTABLISHED 峰值 | ~300 → 压测后逐步下降 |
210+
| TIME_WAIT | ~0 |
211+
| ActiveOpens 峰值 | ~3,907 |
212+
| PassiveOpens | ~143 |
213+
214+
- 长连接特征:与 1% 测试一致,TIME_WAIT 接近 0
215+
216+
#### 磁盘空间
217+
218+
| 分区 | 文件系统 | 挂载点 | 使用率 |
219+
|------|----------|--------|--------|
220+
| /dev/vda1 | ext4 | / | **4.22%** |
221+
| /dev/vdb1d | xfs | /data | **9.28%** |
222+
223+
!!! note "分片服务器资源总结"
224+
225+
- **磁盘 IO 仍是主要瓶颈** — 写 IOPS ~300 k/s,与 1% 持平
226+
- **CPU 调度明显改善** — System Load ~2.94(vs 1% 的 ~70),过载问题消失
227+
- **内存** 30%~50%,余量充足
228+
- **网络** 上传 ~875 KB/s(vs 1% 的 ~341 KB/s),跨分片通信增量显著但未达瓶颈
229+
- **TCP** 长连接,健康无堆积
230+
231+
### 压力服务器(10.15.21.57)
232+
233+
#### CPU
234+
235+
| 指标 | 数值 |
236+
|------|------|
237+
| 核心数 | 32 |
238+
| 聚合使用率峰值 | ~95%(14:40~14:55) |
239+
| 各节点 CPU 峰值 | ~90%(多个实例同时触顶) |
240+
| System Load 峰值 | ~30+ |
241+
| CPU iowait | 持续低位 |
242+
243+
- 压测期间 CPU 从低位快速攀升至 ~95%,较 1% 测试(~90%)进一步恶化
244+
- 跨分片交易构造(路由计算、地址解析)消耗更多 CPU
245+
246+
#### 内存
247+
248+
| 指标 | 数值 |
249+
|------|------|
250+
| 聚合使用率 | ~60%~70% |
251+
| 各节点峰值 | ~70% |
252+
| 是否 OOM ||
253+
254+
- 内存使用与 1% 测试基本持平
255+
256+
#### 网络
257+
258+
| 指标 | 数值 |
259+
|------|------|
260+
| 下载速率峰值 | ~3 KB/s |
261+
| 上传速率峰值 | ~10 KB/s |
262+
263+
- 网络流量极低,带宽未成为瓶颈
264+
265+
#### 磁盘
266+
267+
| 指标 | 数值 |
268+
|------|------|
269+
| IOPS(读) | 峰值 ~20 k/s |
270+
| IOPS(写) | 峰值 ~80 k/s |
271+
| CPU disk IO 占比 | 稳态低位 |
272+
273+
- 磁盘 IO 整体可控
274+
275+
#### TCP 连接
276+
277+
| 指标 | 数值 |
278+
|------|------|
279+
| ESTABLISHED 峰值 | ~900 |
280+
| TIME_WAIT 峰值 | ~985 |
281+
| ActiveOpens 峰值 | ~4,087 |
282+
| PassiveOpens | ~0 |
283+
284+
- 短连接特征:与 1% 测试一致
285+
286+
#### 磁盘空间
287+
288+
| 分区 | 文件系统 | 挂载点 | 使用率 |
289+
|------|----------|--------|--------|
290+
| /dev/vda1 | ext4 | / | **3.22%** |
291+
| /dev/vdb1d | xfs | /data | **20.93%** |
292+
293+
!!! note "压力服务器资源总结"
294+
295+
- **CPU 是主要瓶颈** — 峰值 ~95%(vs 1% 的 ~90%),跨分片交易构造开销更大
296+
- **内存** 60%~70%,尚有余量
297+
- **网络** 带宽消耗极低
298+
- **磁盘 IO** 整体可控
299+
- **TCP** 短连接模式,ESTABLISHED ~900
300+
301+
### 资源对比
302+
303+
| 指标 | 压力服务器 | 分片服务器 |
304+
|------|-----------|-----------|
305+
| CPU 聚合峰值 | ~95% | ~60% |
306+
| System Load 峰值 | ~30 | ~2.94 |
307+
| 内存峰值 | ~70% | ~50% |
308+
| 网络上传峰值 | ~10 KB/s | ~875 KB/s |
309+
| 磁盘写 IOPS 峰值 | ~80 k/s | ~300 k/s |
310+
| CPU disk IO 峰值 | 低位 | 偶发飙升 |
311+
| TCP ESTABLISHED 峰值 | ~900 | ~300 |
312+
| 连接特征 | 短连接(高 TIME_WAIT) | 长连接(零 TIME_WAIT) |
313+
| **主要瓶颈** | **CPU 使用率(95%)** | **磁盘 IO** |
314+
315+
## 跨分片比例趋势分析
316+
317+
| 指标 | 0% 基线 | 1% 跨分片 | 5% 跨分片 | 趋势 |
318+
|------|---------|----------|----------|------|
319+
| 校准 TPS | ~1,100,000 | ~1,056,989 | ~1,009,110 | 每 +1% 跨分片 ≈ -1% TPS |
320+
| 单分片 TPS | ~7,000 | ~7,054 | ~6,727 | 缓慢下降 |
321+
| 成功率 | ≥ 99.9% | 98.67% | 100.00% | 5% 反而改善(无掉线) |
322+
| 尾部延迟 || +3m 24s | +4m 48s | 线性增长 |
323+
| 发送 TPS || 21,417 | 16,980 | 下降 20.7%(CPU 受限) |
324+
| 网络上传(分片) || ~341 KB/s | ~875 KB/s | 增长 156%(跨分片通信) |
325+
326+
## 改进建议
327+
328+
| 优先级 | 改进方向 | 具体措施 |
329+
|--------|---------|---------|
330+
| P0 | 优化分片服务器磁盘 IO | 写 IOPS ~300 k/s 持续为首要瓶颈,升级 SSD 或优化 WAL/批量写入策略 |
331+
| P1 | 降低压力客户端 CPU 消耗 | CPU 95% 已接近极限,跨分片交易路由计算开销大,优化客户端或增加压力机 |
332+
| P1 | 排查区块异常 | 各节点打包/验证/同步异常分散分布,需排查跨分片交易处理流程中的异常源 |
333+
| P2 | 优化尾部延迟 | 4m48s 尾部消化时间较长,评估是否可优化交易池消费速率或缩短发送时长 |
334+
| P2 | 监控跨分片网络开销 | 上传流量增长 156%,随跨分片比例进一步提升需关注网络是否成为新瓶颈 |
335+
| P3 | 继续提升跨分片比例测试 | 建议进行 10%/20% 跨分片压测,验证性能衰减曲线和瓶颈拐点 |

0 commit comments

Comments
 (0)