关于org.springframework.dao.CannotAcquireLockException异常处理

avatar
avatar
云惠网小编
2077
文章
0
评论
2020年9月28日08:28:45 评论 39 次浏览 450字阅读1分30秒

org.springframework.dao.CannotAcquireLockException异常处理

背景

关于org.springframework.dao.CannotAcquireLockException异常处理

测试环境由于数据量不大,请求并发量也不大,所以有非常多的隐藏问题。由于线上环境单数据量暴增,导致死锁的发生,这非常致命,有时还会导致项目的占用的CPU升高以及内存的飙升,CannotAcquireLockException算是最近很经常看见的问题。

造成的原因1:

Spring事务嵌套,当前的业务方法中在一个事务中执行,但是这个方法里还存在调用其他方法,可能也加了事务,底层报错时,事务回滚造成死锁。

当时我也以为是这个问题,所以对一直存在CannotAcquireLockException的接口进行排查,但是始终发现应该不是这个问题。

如果你是这种情况,请妥善处理这之间的关系,改掉写法也好,或者如果另一个业务逻辑不重要,可以开一个线程去执行。

造成的原因2:

查询性能太慢,数据库压力太大,对象被锁定,导致事务出现问题。

解决办法:优化sql查询(找出有可能涉及该表的查询,尽可能优化查询速度)

腾讯云618
avatar
2020年10月份自考总结 阿里云开发与运维

2020年10月份自考总结

  这次自考考了3科分别是英语,数据结构,C++。通过这段时间的学习,过不过的吧,尽力了。尽人事,听天命。过不了,下次继续努力,放平心态。分别说一下这三科的学习。
腾讯云618
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: