压测指标
压测结果分析
一、数据库死锁
1、吞吐量(TPS/QPS)突然暴跌或维持低位
- 现象:曲线图上出现断崖式下跌,或者吞吐量无论如何增加压力(并发用户数)都无法继续上升,维持在一个很低的水平。
- 原因:发生死锁后,数据库会自动回滚其中一个事务。这个回滚操作和事务的重试(如果代码实现了重试)会消耗资源但并未完成有效工作,导致有效吞吐量下降。
2、响应时间(Response Time)急剧上升且波动很大
-
现象:平均响应时间和P95/P99分位响应时间变得非常高,并且抖动非常剧烈(曲线呈“尖刺”状)。
-
原因:大部分事务可能很快完成,但那些被死锁波及的事务需要经历【等待 -> 被回滚 -> 应用层重试】的过程,这个过程非常耗时,极大地拉高了整体响应时间。
3、并发数很高但交易成功率下降
-
现象:你模拟了大量并发用户,但成功完成的事务数(Success Transactions)相比低并发时没有线性增长,甚至开始下降。
-
原因:很多事务在最终重试多次后依然失败(如果你设置了重试上限),被标记为错误。
4、应用层日志中出现大量错误和重试日志
- 现象:这是最直接的应用层证据。查看压测期间应用的错误日志,如果发现大量特定数据库错误码,就几乎可以确诊。
- 原因:数据库将死锁错误返回给客户端,如果你的应用代码捕获并记录了这些异常,就会在日志中留下痕迹。
获取死锁日志:
SHOW ENGINE INNODB STATUS\G