Java项目线上订单突然卡死,原因是数据库死锁,如何全流程排查?
“用户下单全卡死了!客服电话被打爆!” 同时电话铃声响起,我揉了揉惺忪的睡眼,打开监控系统——数据库CPU飙到90%,活跃线程数突破天际,日志里赫然躺着几个大字:Deadlock found。
“用户下单全卡死了!客服电话被打爆!” 同时电话铃声响起,我揉了揉惺忪的睡眼,打开监控系统——数据库CPU飙到90%,活跃线程数突破天际,日志里赫然躺着几个大字:Deadlock found。
对比左右两份日志,发现是同一个事务 ID , TRANSACTION 367507261 ,事务持续了 7 分钟。对应 update 了两个表,左侧执行 update A , 右侧执行了 update B 。开发排查代码发现, A 表 和 B 表不在一个接口里