我是靠谱客的博主 淡定玉米,最近开发中收集的这篇文章主要介绍com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 3000, active 16,maxActive 16,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Could not open JDBC Connection for transaction; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 3000, active 16, maxActive 16"

这个异常可能是因为druid连接池泄漏产生的异常。连接超时,active和maxActive相等,不能够创建新的连接,如果很长时间还获取不到,很有可能是连接池泄漏造成的,而且没有开启druid的超时回收导致的。

添加回收机制后,

#druid recycle
druid.removeAbandoned=true
druid.removeAbandonedTimeout=300
druid.logAbandoned=true

后记补充:通过调用链跟踪发现有一条慢sql执行时间超过16s

在数据库中执行超过8s,表数据库量大小为45w左右,由于是频繁变更的表又不方便加索引担心影响性能,好在可以删除历史数据,将45w条数据降到8w后,慢sql没有了。后面数据量再上来就使用druid的连接池超时机制。

注意:

配置removeAbandoned对性能会有一些影响,建议怀疑存在泄漏之后再打开。在上面的配置中,如果连接超过300秒未关闭,就会被强行回收,并且日志记录连接申请时的调用堆栈。

参考:

https://blog.csdn.net/gongxiao1993/article/details/80680025

https://blog.csdn.net/qq_42922012/article/details/107353194

 

最后

以上就是淡定玉米为你收集整理的com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 3000, active 16,maxActive 16的全部内容,希望文章能够帮你解决com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 3000, active 16,maxActive 16所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部