美文网首页
记一次数据池连接不释放的问题

记一次数据池连接不释放的问题

作者: 赖小赖gogogo | 来源:发表于2019-03-04 22:02 被阅读0次

    项目背景:elastic job(底层是quartz)
    由于esjob中是通过新建线程来执行任务的,所以不能加载为spring bean,因此任务内部通过实现ApplicationContextAware的方式来获取spring bean,问题就出现在这里了


    1.png

    这个任务每分钟跑一次,然后发现数据库连接池中的逻辑开启越来越多,逻辑关闭远小于逻辑开启,一段时间后就无连接可用了,很明显该现象是因为连接没有关闭,连接没有关闭是因为事务没有提交,但一直以来都是这样使用的,不需要手动提交,为什么这里会出问题呢?怀疑是数据库问题(虽然可能性不大),查看后mysql是自动提交的,然后又看了下druid连接池,也是自动提交的,那为什么这里的事务不提交呢 - -
    看了半天后才发现,tmd我没有用到事务啊,之前的方法都是@Transactional管理的,方法开始前会开启事务,结束后会commit或rollback,连接关闭,所以赶紧地把任务抽取成独立方法,加上注解,问题解决

    相关文章

      网友评论

          本文标题:记一次数据池连接不释放的问题

          本文链接:https://www.haomeiwen.com/subject/zcywuqtx.html