某银行二代支付系统升级后,需验证在8000TPS峰值下跨行转账的资金一致性。压测发现高并发下出现账户余额不一致问题——总账和分户账存在偏差,每万笔交易平均偏差0.3%。本案例展示如何通过性能测试验证交易一致性。
准备10万个脱敏账户,分为付款方和收款方两组各5万。每个账户设置初始余额100万元。压测脚本逻辑:从付款方随机取一个账户→向收款方随机转1-100元随机金额→验证付款方扣款+收款方入账总额为0(借贷平衡)。
从2000TPS逐步加到8000TPS,在6000TPS以下一切正常。TPS达到7500时,一致性检查开始报错——部分交易的扣款和入账金额不匹配。
分析发现两个根因:1)分布式事务超时导致部分扣款成功但入账回滚——扣款方本地事务已提交,入账方因网络超时回滚;2)热点账户问题——少数几个收款账户被大量并发写入,行锁等待超时后事务回滚。
1) 将转账事务改为SAGA模式(异步补偿代替同步两阶段),扣款与入账解耦;2) 收款方引入账户分桶——高并发写入的收款账户分散到多个影子账户汇总。调优后TPS达到8200,一致性错误率为0。