长安链 5% 跨分片转账压测报告
本文记录长安链在 5% 跨分片比例下的转账性能压测结果,与 0%/1% 基线对比评估跨分片开销的线性变化趋势。
测试概要
| 项目 | 内容 |
| 测试项目 | 5% 跨分片比例转账压测 |
| 测试目的 | 验证中等跨分片比例下的性能表现,与 0%/1% 基线对比评估跨分片开销的线性变化趋势 |
| 测试步骤 | 使用 100 个 sfc 压力进程向 150 分片发送数据,持续 10 分钟 |
| 测试时间 | 2026-03-10 14:45:02 — 2026-03-10 15:21:35(发送 10m + 尾部处理 4m48s) |
| 压力服务器 | 10.15.21.57(32 核) |
| 分片服务器 | 10.15.21.154(32 核) |
关于分片与链的关系
本次测试部署 150 个分片,每个分片即为一条独立的链。区块链监控以链为维度采集数据,因此后文的分片性能详情以 chain 为单位呈现。
预期结果
| 指标 | 预期值 |
| 单分片 TPS | ~10,000 |
| 成功率 | ≥ 99.9% |
| 性能衰减(vs 0% 基线) | ≤ 10% |
| 尾部延迟 | 无明显积压 |
| 资源占用 | CPU/内存/网络/IO 合理范围,无异常飙升 |
| 区块打包 | 正常,无异常数据或空块 |
测试结论
符合预期:整体满足百万 TPS 要求
测试结果达到百万 TPS 性能目标,成功率 100.00%(零失败分片),相较 1% 测试中 2 个分片掉线的问题有明显改善。但尾部延迟从 3m24s 增加到 4m48s,交易池积压消化时间更长,反映出跨分片比例提升后后端处理压力增大。
关键指标对比
| 指标 | 0% 基线 | 1% 跨分片 | 5% 跨分片 | 变化(5% vs 1%) | 是否达标 |
| 单分片 TPS | ~7,000 | ~7,054 | ~6,727 | -4.6% | ✅ |
| 成功率 | ≥ 99.9% | 98.67% | 100.00% | +1.33pp,零掉线 | ✅ |
| 尾部延迟 | 无明显积压 | +3m 24s | +4m 48s | +1m 24s | ✅ |
| 校准 TPS(聚合) | ~1,100,000 | ~1,056,989 | ~1,009,110 | -4.5% | ✅ |
| 交易池峰值积压 | — | ~500,000 笔 | ~5,000 笔 | 大幅降低 | ✅ |
趋势分析
从 0% → 1% → 5%,校准 TPS 呈线性下降趋势(1,100,000 → 1,056,989 → 1,009,110),每增加 1% 跨分片比例约衰减 ~1%。按此趋势外推,10% 跨分片预计校准 TPS ~960,000,仍可维持在百万量级附近。
瓶颈链路
压力客户端 CPU 饱和(95%)→ 发压速率受限
↓
分片服务器磁盘 IO 竞争 → 区块提交延迟
↓
尾部消化 4m48s(较 1% 增加 1m24s)
问题分析
- 尾部延迟增加 — 发送 TPS(16,980)与实际 TPS(11,469)差距拉大(vs 1% 的 21,417/15,984),跨分片交易需要额外的分片间通信开销,导致后端处理速率进一步下降
- 压力服务器 CPU 饱和 — 峰值 ~95%,高于 1% 测试的 ~90%,跨分片交易构造和路由比纯片内交易消耗更多 CPU
- 发送 TPS 下降 — 16,980 vs 1% 的 21,417,降幅 20.7%,压力客户端 CPU 成为发压瓶颈
- 分片服务器磁盘 IO 持续偏高 — 跨分片交易产生额外的日志和状态写入
压测数据
| 指标 | 数值 |
| 总请求数 | 10,188,396 |
| 成功请求 | 10,188,240 |
| 失败请求 | 156 |
| 成功率 | 100.00% |
| 发送耗时 | 10m 0.03s |
| 总耗时 | 14m 48.32s |
| 发送 TPS | 16,979.81(总请求 / 发送耗时) |
| 实际 TPS | 11,469.33(成功请求 / 总耗时) |
| 校准 TPS | 1,009,109.53 |
指标说明
- 发送 TPS = 总请求数 / 发送耗时,衡量压力客户端的发压速率
- 实际 TPS = 成功请求 / 总耗时,衡量端到端吞吐能力(含尾部消化时间)
- 校准 TPS = 所有分片的聚合 TPS,用于计算单分片 TPS(校准 TPS / 150 ≈ 6,727)
区块链监控分析
交易池
| 指标 | 数值 |
| 峰值积压 | ~5,000 笔 |
| 达峰时间 | ~14:50 |
| 清空时间 | ~15:10 |
| 尾部消化耗时 | ~20 分钟(14:50 → 15:10) |
- 交易池在 14:45 开始增长,~14:50 达到 ~5,000 笔峰值
- 峰值后缓慢下降,~15:10 基本清空
- 相较 1% 测试峰值 50 万笔大幅降低,交易流转更加平稳
区块数据
- 各分片累计交易量增长曲线基本一致,分片负载较均衡
- 区块高度从约 200 增至 ~3,000+,各分片间差异不大,共识过程基本正常
- 交易数累计达 ~1.75M per shard
各节点性能详情
| 指标 | 节点 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 |
| 指标 | 节点 1 | 节点 2 | 节点 3 | 节点 4 |
| 打包异常次数 | 902 | 297 | 146 | 97 |
| 提交异常次数 | 176 | 1,078 | 0 | 0 |
| 验证异常次数 | 2,763 | 606 | 719 | 491 |
| 同步异常次数 | 824 | 2,981 | 0 | 0 |
| 区块延迟时间 | 4,742 | 524 | 124 | 1,418 |
| 区块验证时间 | 2,491 | 1,244 | 151 | 0 |
| 区块同步时间 | 3,706 | 3,603 | 815 | 432 |
异常分析
与 1% 测试异常集中在单节点不同,5% 测试中异常分布更加分散。节点 1 验证异常最高(2,763 次),节点 2 同步异常最高(2,981 次)。这表明跨分片比例提升后,各节点的负载更加均匀但整体异常面更广。
TPS 曲线
- 各分片 TPS 在 14:45~14:55 期间波动在 4,000~8,000
- 14:55 后 TPS 逐步下降(发送结束,进入尾部消化)
- 峰值 TPS 较 1% 测试(5,000~15,000)有所收窄,波动更平稳
资源监控
分片服务器(10.15.21.154)
CPU
| 指标 | 数值 |
| 核心数 | 32 |
| 聚合使用率峰值 | 60%(14:4514:55) |
| 各节点 CPU 峰值 | ~80%(部分核心触顶) |
| System Load 峰值 | ~2.94 |
| CPU iowait | 压测期间偏高(峰值 ~10%) |
- 聚合 CPU ~60%,与 1% 测试持平
- System Load ~2.94,远低于 1% 测试的 ~70,说明 CPU 调度压力大幅改善
- CPU iowait 仍偏高,磁盘 IO 竞争仍然存在
内存
| 指标 | 数值 |
| 聚合使用率 | ~30%~50% |
| 各节点峰值 | ~50% |
| 是否 OOM | 否 |
网络
| 指标 | 数值 |
| 下载速率峰值 | ~4 KB/s |
| 上传速率峰值 | ~875 KB/s |
- 上传流量较 1% 测试(~341 KB/s)增长 ~156%,跨分片交易需要更多的分片间通信
- 带宽仍在可控范围
磁盘
| 指标 | 数值 |
| IOPS(读) | 聚合低位,偶发尖峰 |
| IOPS(写) | 各节点峰值 ~300 k/s |
| CPU disk IO 占比 | 峰值偶发飙升 |
- 写 IOPS 与 1% 测试持平(~300 k/s),磁盘 IO 仍是分片服务器的核心瓶颈
- 跨分片交易增加了额外写入,但峰值未进一步恶化
TCP 连接
| 指标 | 数值 |
| ESTABLISHED 峰值 | ~300 → 压测后逐步下降 |
| TIME_WAIT | ~0 |
| ActiveOpens 峰值 | ~3,907 |
| PassiveOpens | ~143 |
- 长连接特征:与 1% 测试一致,TIME_WAIT 接近 0
磁盘空间
| 分区 | 文件系统 | 挂载点 | 使用率 |
| /dev/vda1 | ext4 | / | 4.22% |
| /dev/vdb1d | xfs | /data | 9.28% |
分片服务器资源总结
- 磁盘 IO 仍是主要瓶颈 — 写 IOPS ~300 k/s,与 1% 持平
- CPU 调度明显改善 — System Load ~2.94(vs 1% 的 ~70),过载问题消失
- 内存 30%~50%,余量充足
- 网络 上传 ~875 KB/s(vs 1% 的 ~341 KB/s),跨分片通信增量显著但未达瓶颈
- TCP 长连接,健康无堆积
压力服务器(10.15.21.57)
CPU
| 指标 | 数值 |
| 核心数 | 32 |
| 聚合使用率峰值 | 95%(14:4014:55) |
| 各节点 CPU 峰值 | ~90%(多个实例同时触顶) |
| System Load 峰值 | ~30+ |
| CPU iowait | 持续低位 |
- 压测期间 CPU 从低位快速攀升至 ~95%,较 1% 测试(~90%)进一步恶化
- 跨分片交易构造(路由计算、地址解析)消耗更多 CPU
内存
| 指标 | 数值 |
| 聚合使用率 | ~60%~70% |
| 各节点峰值 | ~70% |
| 是否 OOM | 否 |
网络
| 指标 | 数值 |
| 下载速率峰值 | ~3 KB/s |
| 上传速率峰值 | ~10 KB/s |
磁盘
| 指标 | 数值 |
| IOPS(读) | 峰值 ~20 k/s |
| IOPS(写) | 峰值 ~80 k/s |
| CPU disk IO 占比 | 稳态低位 |
TCP 连接
| 指标 | 数值 |
| ESTABLISHED 峰值 | ~900 |
| TIME_WAIT 峰值 | ~985 |
| ActiveOpens 峰值 | ~4,087 |
| PassiveOpens | ~0 |
磁盘空间
| 分区 | 文件系统 | 挂载点 | 使用率 |
| /dev/vda1 | ext4 | / | 3.22% |
| /dev/vdb1d | xfs | /data | 20.93% |
压力服务器资源总结
- CPU 是主要瓶颈 — 峰值 ~95%(vs 1% 的 ~90%),跨分片交易构造开销更大
- 内存 60%~70%,尚有余量
- 网络 带宽消耗极低
- 磁盘 IO 整体可控
- TCP 短连接模式,ESTABLISHED ~900
资源对比
| 指标 | 压力服务器 | 分片服务器 |
| CPU 聚合峰值 | ~95% | ~60% |
| System Load 峰值 | ~30 | ~2.94 |
| 内存峰值 | ~70% | ~50% |
| 网络上传峰值 | ~10 KB/s | ~875 KB/s |
| 磁盘写 IOPS 峰值 | ~80 k/s | ~300 k/s |
| CPU disk IO 峰值 | 低位 | 偶发飙升 |
| TCP ESTABLISHED 峰值 | ~900 | ~300 |
| 连接特征 | 短连接(高 TIME_WAIT) | 长连接(零 TIME_WAIT) |
| 主要瓶颈 | CPU 使用率(95%) | 磁盘 IO |
跨分片比例趋势分析
| 指标 | 0% 基线 | 1% 跨分片 | 5% 跨分片 | 趋势 |
| 校准 TPS | ~1,100,000 | ~1,056,989 | ~1,009,110 | 每 +1% 跨分片 ≈ -1% TPS |
| 单分片 TPS | ~7,000 | ~7,054 | ~6,727 | 缓慢下降 |
| 成功率 | ≥ 99.9% | 98.67% | 100.00% | 5% 反而改善(无掉线) |
| 尾部延迟 | 无 | +3m 24s | +4m 48s | 线性增长 |
| 发送 TPS | — | 21,417 | 16,980 | 下降 20.7%(CPU 受限) |
| 网络上传(分片) | — | ~341 KB/s | ~875 KB/s | 增长 156%(跨分片通信) |
改进建议
| 优先级 | 改进方向 | 具体措施 |
| P0 | 优化分片服务器磁盘 IO | 写 IOPS ~300 k/s 持续为首要瓶颈,升级 SSD 或优化 WAL/批量写入策略 |
| P1 | 降低压力客户端 CPU 消耗 | CPU 95% 已接近极限,跨分片交易路由计算开销大,优化客户端或增加压力机 |
| P1 | 排查区块异常 | 各节点打包/验证/同步异常分散分布,需排查跨分片交易处理流程中的异常源 |
| P2 | 优化尾部延迟 | 4m48s 尾部消化时间较长,评估是否可优化交易池消费速率或缩短发送时长 |
| P2 | 监控跨分片网络开销 | 上传流量增长 156%,随跨分片比例进一步提升需关注网络是否成为新瓶颈 |
| P3 | 继续提升跨分片比例测试 | 建议进行 10%/20% 跨分片压测,验证性能衰减曲线和瓶颈拐点 |