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

   日期:2020-09-27     浏览:703    评论:0    
核心提示:org.springframework.dao.CannotAcquireLockException异常处理背景测试环境由于数据量不大,请求并发量也不大,所以有非常多的隐藏问题。由于线上环境单数据量暴增,导致死锁的发生,这非常致命,有时还会导致项目的占用的CPU升高以及内存的飙升,CannotAcquireLockException算是最近很经常看见的问题。造成的原因1:Spring事务嵌套,当前的业务方法中在一个事务中执行,但是这个方法里还存在调用其他方法,可能也加了事务,底层报错时,事务回滚造

org.springframework.dao.CannotAcquireLockException异常处理

背景

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

造成的原因1:

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

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

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

造成的原因2:

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

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

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服