跳转至

长安链 1% 跨分片转账压测报告

本文记录长安链在 1% 跨分片比例下的转账性能压测结果,与 0% 基线对比评估跨分片开销的边际影响。

测试概要

项目 内容
测试项目 1% 跨分片比例转账压测
测试目的 验证低跨分片比例下的性能表现,与 0% 基线对比评估跨分片开销的边际影响
测试步骤 使用 100 个 sfc 压力进程向 150 分片发送数据,持续 10 分钟
测试时间 2026-03-09 10:23:27 — 2026-03-09 10:36:51(发送 10m + 尾部处理 3m24s)
压力服务器 10.15.21.100(32 核)
分片服务器 10.15.21.154(32 核)

关于分片与链的关系

本次测试部署 150 个分片,每个分片即为一条独立的链。区块链监控以链为维度采集数据,因此后文的分片性能详情以 chain 为单位呈现。

预期结果

指标 预期值
单分片 TPS ~10,000
性能衰减(vs 0% 基线) ≤ 5%
尾部延迟 无明显积压
资源占用 CPU/内存/网络/IO 合理范围,无异常飙升
区块打包 正常,无异常数据或空块

测试结论

符合预期:整体满足百万 TPS 要求

测试结果满足百万 TPS 的性能目标,但测试过程中发现了一些问题:2 个分片异常掉线,以及分片服务器磁盘 IO 竞争(disk IO 100%)形成级联瓶颈。

关键指标对比

指标 0% 基线(非跨分片) 1% 跨分片 变化 是否达标
单分片 TPS ~7,000 ~7,054 基本持平,分片 TPS 随压测分片规模上升线性降低 ✅
成功率 ≥ 99.9% 98.67% -1.23pp,2 个分片异常掉线 ✅
尾部延迟 无明显积压 +3m 24s 压测结束后信息汇总 ✅
校准 TPS(聚合) ~1,100,000 ~1,056,989 -3.9% ✅
交易池峰值积压 — ~500,000 笔 高峰期发送速率超过处理能力 ❌

瓶颈链路

压力客户端 CPU 饱和(90%)→ 发压速率受限
                              ↓
              分片服务器磁盘 IO 饱和(100%)→ 区块提交延迟
                              ↓
              交易池积压 50 万 → 尾部消化 3m24s

问题分析

  1. 2 个分片异常掉线 — 导致 171,345 笔失败请求,成功率降至 98.67%
  2. 尾部延迟 — 发送 TPS(21,417)与实际 TPS(15,984)存在差距,后端无法跟上发压速率,导致发送完成后仍需 3m24s 消化积压
  3. 分片服务器磁盘 IO 瓶颈 — 写 IOPS 峰值 300 k/s,CPU disk IO 100%,是限制后端处理速率的核心因素
  4. 压力服务器 CPU 接近饱和 — 90% CPU + System Load 30/32 核,可能限制了发压上限

压测数据

指标 数值
总请求数 12,850,843
成功请求 12,679,498
失败请求 171,345
成功率 98.67%
发送耗时 10m 0.03s
总耗时 13m 23.98s
发送 TPS 21,416.83(总请求 / 发送耗时)
实际 TPS 15,984.12(成功请求 / 总耗时)
校准 TPS 1,056,989.06

指标说明

  • 发送 TPS = 总请求数 / 发送耗时,衡量压力客户端的发压速率
  • 实际 TPS = 成功请求 / 总耗时,衡量端到端吞吐能力(含尾部消化时间)
  • 校准 TPS = 所有分片的聚合 TPS,用于计算单分片 TPS(校准 TPS / 150 ≈ 7,054)

区块链监控分析

交易池

指标 数值
峰值积压 ~500,000 笔
达峰时间 ~10:27
清空时间 ~10:34
尾部消化耗时 ~7 分钟(10:27 → 10:34)
  • 交易池在 10:23 开始快速增长,~10:27 达到 50 万峰值
  • 峰值后逐步下降,~10:34 基本清空
  • 发送在 10:33 结束,但交易池在 10:27 就开始下降,说明后端处理能力在高峰期已接近发送速率

区块数据

  • 各分片累计交易量增长曲线基本一致,分片负载较均衡
  • 区块高度从约 200 增至 ~1,500,各分片间差异不大,共识过程基本正常
  • 大部分区块大小在 0~40 范围,但**出现 3,980 个异常大区块**,压力高峰期产生大量"胖块"

各节点性能详情

指标 节点 1 节点 2 节点 3 节点 4
打包异常次数 正常 正常 正常 2,954
提交异常次数 正常 正常 正常 2,537
验证异常次数 正常 正常 正常 988
同步异常次数 正常 正常 1,846 255
TPS 范围 5,000~15,000 5,000~15,000 5,000~15,000 5,000~15,000

异常分片

测试中有 2 个分片异常掉线,其中节点 4 打包(2,954 次)、提交(2,537 次)、验证(988 次)异常显著,节点 3 在同步维度存在 1,846 次异常。

TPS 曲线

  • 各分片 TPS 在 10:23~10:33 期间波动在 5,000~15,000
  • 10:33 后 TPS 快速下降至 0(发送结束,进入尾部消化)

资源监控

压力服务器(10.15.21.100)

CPU

指标 数值
核心数 32
聚合使用率峰值 90%(10:2510:35)
各节点 CPU 峰值 ~90%(多个实例同时触顶)
System Load 峰值 ~30(接近核心数上限)
CPU iowait 持续低位,无明显 IO 等待
  • 压测期间 CPU 从低位快速攀升至 ~90%,发送结束后迅速回落
  • 各节点 CPU 曲线一致,压力分布均匀

内存

指标 数值
聚合使用率 ~60%~80%
各节点峰值 ~80%
是否 OOM 否
  • 内存在 10:25 左右稳定在 60%~80% 区间
  • 压测结束后内存未明显释放,存在缓存驻留

网络

指标 数值
下载速率峰值 ~3.03 KB/s
上传速率峰值 ~10.7 KB/s
  • 网络流量极低,带宽未成为瓶颈

磁盘

指标 数值
IOPS(读) 峰值 ~50 k/s,稳态 1030 k/s
IOPS(写) 峰值 ~100+ k/s
读写吞吐 读 ~12.7 MB/s,写峰值 ~55 MB/s
IO 延迟 读 ~3 ms,写峰值 ~5 ms
CPU disk IO 占比 稳态 ≤20%,峰值偶发 ~80%
  • 磁盘 IO 在高峰期短暂飙升,持续时间较短
  • CPU disk IO 偶发高位(~80%),存在短暂 IO 竞争但整体可控

TCP 连接

指标 数值
ESTABLISHED 峰值 ~800 → 压测后迅速回落至 ~5
TIME_WAIT 峰值 ~800
ActiveOpens 峰值 ~5,020
PassiveOpens ~0
  • 短连接特征:ESTABLISHED 和 TIME_WAIT 同步飙升,连接频繁创建/销毁
  • ActiveOpens ~5,020 说明压力客户端主动发起大量连接

磁盘空间

分区 文件系统 挂载点 可用 使用率
/dev/vda1 ext4 / 93.51 GB 9.22%
/dev/vdb1d xfs /data 206.86 GB 26.63%

压力服务器资源总结

  • CPU 是主要瓶颈 — 峰值 ~90%,System Load ~30 接近核心数上限,可能限制发压能力
  • 内存 60%~80%,尚有余量
  • 网络 带宽消耗极低
  • 磁盘 IO 短暂峰值,整体可控
  • TCP 短连接模式,可考虑连接池优化

分片服务器(10.15.21.154)

CPU

指标 数值
核心数 32
聚合使用率峰值 60%(10:2510:35)
各节点 CPU 峰值 ~90%(部分核心触顶,核间差异较大)
System Load 峰值 ~70(核心数的 2.2 倍)
CPU iowait 压测期间持续偏高
  • 聚合 CPU ~60%,但部分核心峰值接近 90%,负载核间不均衡
  • System Load ~70 远超核心数 32,存在明显过载
  • CPU iowait 持续偏高,IO 等待影响 CPU 调度效率

内存

指标 数值
聚合使用率 ~30%~50%
各节点峰值 ~40%
是否 OOM 否
  • 内存压力较轻,压测结束后缓慢释放

网络

指标 数值
下载速率峰值 ~4.01 KB/s
上传速率峰值 ~341 KB/s
  • 上传流量远高于压力服务器(341 vs 10.7 KB/s),因分片节点间存在大量区块同步和共识通信
  • 带宽仍在可控范围

磁盘

指标 数值
IOPS(读) 聚合低位,偶发尖峰
IOPS(写) 各节点峰值 ~300 k/s
CPU disk IO 占比 峰值接近 ~100%
  • 写 IOPS ~300 k/s 远高于压力服务器(~100 k/s),区块提交产生大量磁盘写入
  • 磁盘 IO 是分片服务器的主要瓶颈,CPU disk IO 在压测高峰期接近 100%

TCP 连接

指标 数值
ESTABLISHED 峰值 ~300 → 逐步下降
TIME_WAIT ~0
ActiveOpens 峰值 ~3,907
PassiveOpens ~143
  • 长连接特征:TIME_WAIT 接近 0,连接生命周期较长
  • PassiveOpens ~143 反映节点间通信的被动连接

磁盘空间

分区 文件系统 挂载点 使用率
/dev/vda1 ext4 / 4.20%
/dev/vdb1d xfs /data 8.44%

分片服务器资源总结

  • 磁盘 IO 是主要瓶颈 — 写 IOPS ~300 k/s,CPU disk IO 占比接近 100%
  • CPU 调度过载 — System Load ~70 / 32 核 = 2.2 倍,iowait 偏高
  • 内存 30%~50%,余量充足
  • 网络 上传 ~341 KB/s(节点间同步),未达瓶颈
  • TCP 长连接,健康无堆积

资源对比

指标 压力服务器 分片服务器
CPU 聚合峰值 ~90% ~60%
System Load 峰值 ~30 ~70
内存峰值 ~80% ~40%
网络上传峰值 ~10.7 KB/s ~341 KB/s
磁盘写 IOPS 峰值 ~100 k/s ~300 k/s
CPU disk IO 峰值 ~80% ~100%
TCP ESTABLISHED 峰值 ~800 ~300
连接特征 短连接(高 TIME_WAIT) 长连接(零 TIME_WAIT)
主要瓶颈 CPU 使用率 磁盘 IO + CPU Load

改进建议

优先级 改进方向 具体措施
P0 优化分片服务器磁盘 IO 升级 SSD 或优化 WAL/批量写入策略,写 IOPS 300 k/s + disk IO 100% 是首要瓶颈
P0 排查分片异常掉线 定位 2 个分片掉线的根因,检查资源竞争及跨分片交易路由分布
P1 降低分片服务器 CPU Load System Load 70/32 核,排查线程/协程数量或 IO 阻塞导致的调度排队
P1 分析失败交易 对 171,345 笔失败请求分类(超时/拒绝/其他),定位根因
P2 优化交易池管理 峰值 50 万积压,评估是否需调整 max_txpool_size 或限流策略
P3 评估压力服务器 CPU 上限 CPU 90% 可能限制发压能力,必要时增加压力机或优化压测客户端

评论