某银行核心账务系统大版本升级后,压测发现TPS从预期的5000骤降至2200,且P99响应时间从1.2秒飙升至4.8秒。项目组需要在2周内定位瓶颈并达到上线标准。本案例完整还原了从问题发现→根因分析→逐层调优→最终验证的全过程。
以1000并发执行记账交易混合场景,结果:TPS=2200(目标5000),P50=380ms,P99=4800ms,CPU使用率仅45%。关键发现:TPS在并发700时达到拐点、P99出现周期性尖峰。
分析AWR报告发现Top SQL是一条记账事务的UPDATE语句,每次执行需要平均850ms。进一步分析执行计划——发现统计信息过旧导致优化器选错了索引。更新统计信息后,该SQL执行时间降到12ms。TPS提升至3200但仍不达标。
TPS在3200后不再增长,检查WebLogic连接池——最大连接数设置为50。根据并发模型计算需要至少120个连接。调大连接池至150,TPS提升至4200。
P99仍然偏高(3.2秒),GC日志显示Young GC频率20次/分钟但每次仅20ms,Full GC每小时2次每次3秒——恰好对应P99毛刺。调整-XX:NewRatio=2 -XX:SurvivorRatio=8,增大年轻代比例。TPS达到4900,P99降至1.5s。
稳定性测试8小时:TPS均值4850,P50=280ms,P95=520ms,P99=1.1s,错误率0.007%。结论:各项指标基本达标,准出通过。
| 指标 | 调优前 | 调优后 | 提升 |
|---|---|---|---|
| TPS | 2200 | 4900 | +123% |
| P50 | 380ms | 280ms | -26% |
| P99 | 4800ms | 1100ms | -77% |
| Full GC/小时 | 2次 | 0次 | -100% |