druid连接泄露问题

weixin_38051062 2017-09-02 12:57:28
 开发四年只会写业务代码,分布式高并发都不会还做程序员?->>>    @wenshao 你好,想跟你请教个问题: 最近我在用druid做项目时碰到一个问题,应用在访问一段时间后会出现数据连接不响应,应用无响应现象,必须重启才可以继续使用,通过查看监控平台看到“逻辑连接打开次数”和“逻辑连接关闭次数”是匹配的 可以过一段时间之后 就不匹配了 再过一段时间“池中连接数(27个)”比“池中连接数峰值(30个)”少(因为我初始化最小连接是30个,最小空闲连接也是30个最大是50个)然后也配置removeAbandoned=true,removeAbandonedTimeout=180, logAbandoned=true这三个参数了 我发现连接数不匹配的时候也查看了StackTrace for active Connection这个 但是这个里面什么都没有,然后也按照官方的说法“在内置监控页面weburi-detail.html中,查看JdbcPoolConnectionOpenCount和JdbcPoolConnectionCloseCount属性,如果不相等,就是泄漏了。”一个一个查看url的打开链接次数(JdbcPoolConnectionOpenCount)和关闭连接次数(JdbcPoolConnectionCloseCount)都一样 但是为什么还有链接没有释放?removeAbandoned这个属性是不是表示的是我从连接池拿到一个连接没有返回到连接池里面在一定时间内强制回收是吗?
...全文
248 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38065708 2017-09-02
  • 打赏
  • 举报
回复
引用来自“漆黑的烈焰使”的评论Druid 的监控怎么配置需要权限才能进入查看监控页面?现在大家都可以看 可以配置账号和密码和IP限制. 可以参考http://www.oschina.net/question/67067_88767?sort=time
weixin_38059994 2017-09-02
  • 打赏
  • 举报
回复
引用来自“蓝水晶飞机”的评论可能不是 Druid 的问题,我也试过连接用完的情况,Web项目就陷入无限等待连接池了。 原因:可能是你的程序因为异常或者其他原因造成,没有释放被使用过的数据库连接。 我测试过就算程序异常也是可以回收的。并且我把全部功能逐个点一边连接也都能正常的回收。还有要是没有回收的话我配置了removeAbandoned=true,removeAbandonedTimeout=180这两个参数,当连接3分钟没有返回连接池并且在活跃状态(我个人理解)应该会强制回收的,如果强制回收了我也配置了logAbandoned=true应该能从StackTrace for active Connection看到强制回收的log吧!但是现在点击进去是 {"ResultCode":1,"Content":[]} url监控我全部点了一遍查看JdbcPoolConnectionOpenCount和JdbcPoolConnectionCloseCount的值都是相等的  但是为什么数据源的里面的逻辑连接打开次数和逻辑连接关闭次数不相等 
weixin_38053856 2017-09-02
  • 打赏
  • 举报
回复
Druid 的监控怎么配置需要权限才能进入查看监控页面?现在大家都可以看
weixin_38053335 2017-09-02
  • 打赏
  • 举报
回复
可能不是 Druid 的问题,我也试过连接用完的情况,Web项目就陷入无限等待连接池了。 原因:可能是你的程序因为异常或者其他原因造成,没有释放被使用过的数据库连接。
weixin_38101966 2017-09-02
  • 打赏
  • 举报
回复
引用来自“蓝水晶飞机”的评论可能不是 Druid 的问题,我也试过连接用完的情况,Web项目就陷入无限等待连接池了。 原因:可能是你的程序因为异常或者其他原因造成,没有释放被使用过的数据库连接。 引用来自“MLGKO”的评论 我测试过就算程序异常也是可以回收的。并且我把全部功能逐个点一边连接也都能正常的回收。还有要是没有回收的话我配置了removeAbandoned=true,removeAbandonedTimeout=180这两个参数,当连接3分钟没有返回连接池并且在活跃状态(我个人理解)应该会强制回收的,如果强制回收了我也配置了logAbandoned=true应该能从StackTrace for active Connection看到强制回收的log吧!但是现在点击进去是 {"ResultCode":1,"Content":[]} url监控我全部点了一遍查看JdbcPoolConnectionOpenCount和JdbcPoolConnectionCloseCount的值都是相等的  但是为什么数据源的里面的逻辑连接打开次数和逻辑连接关闭次数不相等 我使用的是springMVC+MyBatis,然后是mybatis自动帮我生成dao实现类。我虽然是多数据源但是没有使用spring的AbstractRoutingDataSource +aop去切数据源。我是使用的注解。我的数据源配置如图
weixin_38096689 2017-09-02
  • 打赏
  • 举报
回复
连接池也必须关闭(入池),你肯定漏掉了

435

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧