长安链 20% 跨分片转账压测报告
本文记录长安链在 20% 跨分片比例下的转账性能压测结果,与 0%/1%/5%/10% 基线对比评估跨分片开销的变化趋势。
测试概要
| 项目 | 内容 |
|---|---|
| 测试项目 | 20% 跨分片比例转账压测 |
| 测试目的 | 验证高跨分片比例下的性能表现,与 0%/1%/5%/10% 基线对比评估跨分片开销是否仍呈线性变化 |
| 测试步骤 | 使用 sfc 压力工具向 150 分片发送转账交易,持续约 8 分钟 |
| 测试时间 | 2026-03-19 15:14:06 — 2026-03-19 15:25:55(发送 8m20s + 尾部处理 3m28s) |
| 压力服务器 | 单台 32 核 |
| 分片服务器 | 单台 32 核(150 分片) |
预期结果
| 指标 | 预期值 |
|---|---|
| 单分片 TPS | ~5,800 |
| 成功率 | ≥ 99% |
| 性能衰减(vs 10% 基线) | ~-17% |
| 尾部延迟 | ~+10 分钟 |
| 资源占用 | CPU/内存/网络/IO 合理范围,无异常飙升 |
| 区块打包 | 正常,无异常数据或空块 |
测试结论
⚠️ 部分符合预期,存在瓶颈:成功率 100%,但压力服务器资源受限,分片服务器 System Load 显著上升
测试结果校准 TPS 832,506(vs 10% 的 1,004,300),降幅 17.1%,与每增加 1% 跨分片约损失 1% 性能的趋势基本一致。成功率保持 100%,零失败。但**压力服务器资源占用率过高导致发送压力上不去**,分片服务器 System Load ~48 显著高于 10% 的 ~0.08,跨分片协调压力明显增大。
关键指标对比
| 指标 | 0% 基线 | 1% 跨分片 | 5% 跨分片 | 10% 跨分片 | 20% 跨分片 | 变化(20% vs 10%) | 是否达标 |
|---|---|---|---|---|---|---|---|
| 单分片 TPS | ~7,000 | ~7,054 | ~6,727 | ~6,695 | ~5,550 | -17.1% | ✅ |
| 成功率 | ≥ 99.9% | 98.67% | 100.00% | 100.00% | 100.00% | 持平 | ✅ |
| 尾部延迟 | 无 | +3m 24s | +4m 48s | +2m 34s | +3m 28s | +54s | ✅ |
| 校准 TPS(聚合) | ~1,100,000 | ~1,056,989 | ~1,009,110 | ~1,004,300 | 832,506 | -17.1% | ✅ |
| 交易池峰值积压 | — | ~500,000 笔 | ~5,000 笔 | ~8,000 笔 | ~5,000 笔 | 持平 | ✅ |
💡 趋势分析
从 0% → 1% → 5% → 10% → 20%,校准 TPS 呈持续下降趋势(1,100,000 → 1,056,989 → 1,009,110 → 1,004,300 → 832,506)。10% → 20% 区间衰减约 17.1%,基本符合每 +1% 跨分片 ≈ -1% TPS 的线性预测。
瓶颈链路
压力客户端 CPU 饱和(~100%)→ 发压速率受限
↓
分片服务器 System Load ~48 → 跨分片协调开销增大
↓
磁盘 IO 持续 ~100-300k/s → 区块提交压力
↓
尾部消化 3m28s(较 10% 增加 54s)
问题分析
- 压力机 CPU + 内存双重瓶颈 — CPU 满载、内存 ~70%,共同限制发压能力,发送压力上不去
- 分片服务器 System Load 显著上升 — 从 10% 的 ~0.08 升至 ~48,跨分片协调压力显著增大
- 磁盘 IO 持续压力 — 写 IOPS 保持高位
- 跨分片通信开销 — 网络流量持续,分片间 RPC 调用增多
压测数据
| 指标 | 数值 |
|---|---|
| 总请求数 | 13,076,415 |
| 成功请求 | 13,076,415 |
| 失败请求 | 0 |
| 成功率 | 100.00% |
| 发送耗时 | 8m 20s |
| 总耗时 | 11m 48s |
| 发送 TPS | 26,151.99(总请求 / 发送耗时) |
| 实际 TPS | 18,445.59(成功请求 / 总耗时) |
| 校准 TPS | 832,506.14 |
区块链监控分析
交易池
| 指标 | 数值 |
|---|---|
| 峰值积压 | ~5,000 笔 |
| 尾部消化耗时 | ~3m28s |
● 交易池积压情况正常
● 尾部消化耗时 3m28s,较 10% 测试(2m34s)有所增加
区块数据
● 各分片累计交易量增长曲线基本一致,分片负载较均衡
● 区块高度正常增长,各分片间差异不大,共识过程基本正常
各节点性能详情
| 指标 | 节点 1 | 节点 2 | 节点 3 | 节点 4 |
|---|---|---|---|---|
| 区块打包耗时 | 正常(0.0s) | 正常(0.0s) | 正常(0.0s) | 正常(0.0s) |
| 区块提交耗时 | 正常(0.0s) | 正常(0.0s) | 正常(0.0s) | 正常(0.0s) |
| 区块验证耗时 | 正常(0.0s) | 正常(0.0s) | 正常(0.0s) | 正常(0.0s) |
| TPS 范围 | 4,000~8,000 | 4,000~8,000 | 4,000~8,000 | 4,000~8,000 |
TPS 曲线
● 各分片 TPS 在压测期间保持相对稳定,波动在 4,000~8,000
● 停止发送后 TPS 逐步下降进入尾部消化
资源监控
压力服务器
CPU
| 指标 | 数值 |
|---|---|
| 核心数 | 32 |
| 聚合使用率峰值 | ~95-100%(满载) |
| 各节点 CPU 峰值 | ~90%(多个实例同时触顶) |
| System Load 峰值 | ~30+ |
| CPU iowait | 持续低位 |
● CPU 满载运行,是限制发压能力的首要瓶颈
● System Load 高,调度压力较大
内存
| 指标 | 数值 |
|---|---|
| 聚合使用率 | ~60%~70% |
| 各节点峰值 | ~70% |
| 是否 OOM | 否 |
● 内存使用与 10% 测试基本持平
网络
| 指标 | 数值 |
|---|---|
| 下载速率峰值 | ~3 KB/s |
| 上传速率峰值 | ~10 KB/s |
● 网络流量极低,带宽未成为瓶颈
磁盘
| 指标 | 数值 |
|---|---|
| IOPS(读) | 峰值 ~20 k/s |
| IOPS(写) | 峰值 ~80 k/s |
| CPU disk IO 占比 | 稳态低位 |
● 磁盘 IO 整体可控
TCP 连接
| 指标 | 数值 |
|---|---|
| ESTABLISHED 峰值 | ~900 |
| TIME_WAIT 峰值 | ~985 |
| ActiveOpens 峰值 | ~4,087 |
| PassiveOpens | ~0 |
● 短连接特征:与 10% 测试一致
磁盘空间
| 分区 | 文件系统 | 挂载点 | 使用率 |
|---|---|---|---|
| /dev/vda1 | ext4 | / | ~4% |
| /dev/vdb1d | xfs | /data | ~21% |
压力服务器资源总结
● CPU 是主要瓶颈 — 峰值 ~95-100%(满载),限制发压能力
● 内存 60%~70%,尚有余量
● 网络 带宽消耗极低
● 磁盘 IO 整体可控
● TCP 短连接模式,ESTABLISHED ~900
分片服务器
CPU
| 指标 | 数值 |
|---|---|
| 核心数 | 32 |
| 聚合使用率峰值 | ~60-80% |
| System Load 峰值 | ~48 |
| CPU iowait | 压测期间偏高 |
● CPU 使用率较 10% 测试(~50%)有所上升
● System Load ~48(vs 10% 的 ~0.08),跨分片协调压力显著增大
● CPU iowait 偏高,磁盘 IO 竞争仍然存在
内存
| 指标 | 数值 |
|---|---|
| 聚合使用率 | ~30%~50% |
| 各节点峰值 | ~50% |
| 是否 OOM | 否 |
● 内存压力较轻,与 10% 测试基本持平
网络
| 指标 | 数值 |
|---|---|
| 下载速率峰值 | ~4 KB/s |
| 上传速率峰值 | ~2 MB/s |
● 上传流量较 10% 测试(~22.7 KB/s)显著增长,跨分片交易需要更多分片间通信
● 带宽仍在可控范围
磁盘
| 指标 | 数值 |
|---|---|
| IOPS(读) | 聚合低位,偶发尖峰 |
| IOPS(写) | 各节点峰值 ~300 k/s |
| CPU disk IO 占比 | 峰值偶发飙升 |
● 写 IOPS 较 10% 测试(~400 k/s)有所回落,磁盘 IO 仍是分片服务器的核心瓶颈
● 跨分片交易增加了额外写入,但峰值未进一步恶化
TCP 连接
| 指标 | 数值 |
|---|---|
| ESTABLISHED 峰值 | ~300 → 压测后逐步下降 |
| TIME_WAIT | ~0 |
● 长连接特征:与 10% 测试一致,TIME_WAIT 接近 0
磁盘空间
| 分区 | 文件系统 | 挂载点 | 使用率 |
|---|---|---|---|
| /dev/vda1 | ext4 | / | ~5% |
| /dev/vdb1d | xfs | /data | ~10% |
分片服务器资源总结
● 磁盘 IO 仍是主要瓶颈 — 写 IOPS ~300 k/s(vs 10% 的 ~400 k/s)
● System Load 显著上升 — ~48(vs 10% 的 ~0.08),跨分片协调压力显著增大
● 内存 30%~50%,余量充足
● 网络 上传 ~2 MB/s(vs 10% 的 ~22.7 KB/s),跨分片通信增量显著
● TCP 长连接,健康无堆积
资源对比
| 指标 | 压力服务器 | 分片服务器 |
|---|---|---|
| CPU 核心数 | 32 | 32 |
| CPU 聚合峰值 | ~95-100% | ~60-80% |
| System Load 峰值 | ~30+ | ~48 |
| 内存峰值 | ~70% | ~50% |
| 网络上传峰值 | ~10 KB/s | ~2 MB/s |
| 磁盘写 IOPS 峰值 | ~80 k/s | ~300 k/s |
| CPU disk IO 峰值 | 低位 | 偶发飙升 |
| TCP ESTABLISHED 峰值 | ~900 | ~300 |
| 连接特征 | 短连接(高 TIME_WAIT) | 长连接(零 TIME_WAIT) |
| 主要瓶颈 | CPU 使用率(100%) | System Load + 磁盘 IO |
跨分片比例趋势分析
| 指标 | 0% 基线 | 1% 跨分片 | 5% 跨分片 | 10% 跨分片 | 20% 跨分片 | 趋势 |
|---|---|---|---|---|---|---|
| 校准 TPS | ~1,100,000 | ~1,056,989 | ~1,009,110 | ~1,004,300 | 832,506 | 持续下降,20% 仍维持 80万+ 量级 |
| 单分片 TPS | ~7,000 | ~7,054 | ~6,727 | ~6,695 | ~5,550 | 缓慢下降 |
| 成功率 | ≥ 99.9% | 98.67% | 100.00% | 100.00% | 100.00% | 5% 后稳定 100% |
| 尾部延迟 | 无 | +3m 24s | +4m 48s | +2m 34s | +3m 28s | 20% 较 10% 增加 |
| 发送 TPS | — | 21,417 | 16,980 | 25,481 | 26,152 | 20% 持续高位 |
| System Load(分片) | — | — | ~2.94 | ~0.08 | ~48 | 20% 显著上升 |
| 磁盘写 IOPS(分片) | — | ~300 k/s | ~300 k/s | ~400 k/s | ~300 k/s | 20% 低于 10% |
改进建议
| 优先级 | 改进方向 | 具体措施 |
|---|---|---|
| P0 | 解决压力机 CPU 瓶颈 | CPU 100% 满载限制发压能力,增加压力服务器数量(2台+)或优化客户端性能 |
| P1 | 降低分片服务器 System Load | System Load ~48 显著高于 10% 的 ~0.08,优化跨分片协调机制,减少 RPC 调用开销 |
| P1 | 优化分片服务器磁盘 IO | 写 IOPS ~300 k/s 持续为首要瓶颈,升级 NVMe SSD 或优化 WAL/批量写入策略 |
| P2 | 持续优化尾部延迟 | 当前 3m28s 较 10% 测试(2m34s)有所增加,评估是否可进一步优化交易池消费速率 |
| P2 | 监控跨分片网络开销 | 上传流量增长至 ~2 MB/s,随跨分片比例进一步提升需关注网络是否成为新瓶颈 |
| P3 | 继续提升跨分片比例测试 | 建议进行 30%/50% 跨分片压测,验证性能衰减拐点和系统极限 |