参考:http://www.cnblogs.com/netcorner/p/4380949.html

在工程中使用了druid连接池,运行一段时间后系统出现异常:

  1. Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60009, active 50
  2. at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80)
  3. at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:280)
  4. ... 64 more
  5. Caused by: com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60000, active 50
  6. at com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1071)
  7. at com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(DruidDataSource.java:898)
  8. at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:4544)

mysql数据库最大连接数设置为500,使用客户端能正常连接。连接数被未被占满。

分析原因应该是程序中有地方连接未关闭造成的。那如何来定呢?使用druid连接池的超时回收机制,在配置中增加以下内容:

  1. <!-- 超过时间限制是否回收 -->
  2. <property name="removeAbandoned" value="true" />
  3. <!-- 超时时间;单位为秒。180秒=3分钟 -->
  4. <property name="removeAbandonedTimeout" value="180" />
  5. <!-- 关闭abanded连接时输出错误日志 -->
  6. <property name="logAbandoned" value="true" />

运行程序,当连接超过3分钟后会强制进行回收,并输出异常日志。

  1. 2014-10-13 16:02:28,919 ERROR [com.alibaba.druid.pool.DruidDataSource] - <abandon connection, open stackTrace
  2. at java.lang.Thread.getStackTrace(Thread.java:1567)
  3. at com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(DruidDataSource.java:995)
  4. at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:4544)
  5. at com.alibaba.druid.filter.stat.StatFilter.dataSource_getConnection(StatFilter.java:661)
  6. at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:4540)
  7. at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:919)
  8. at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:911)
  9. at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:98)
  10. at cn.org.xxx.xxx.xxx.PaginationInterceptor.intercept(PaginationInterceptor.java:96)
  11. at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:60)
  12. at com.sun.proxy.$Proxy59.query(Unknown Source)
  13. at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:108)

很清楚地看到是在哪里打开的连接未关闭一直在占有。

此配置项会影响性能,只在排查的时候打开。系统运行时最好关闭。

使用druid连接池的超时回收机制排查连接泄露问题相关推荐

  1. druid连接池 - 长时间阻塞问题排查

    前言 最近参与一个新项目,从老项目拷贝过来的代码,同样用的druid连接池 + PG.但是新项目却经常出现阻塞的情况,有时候甚至可以阻塞半个小时.一时间傻眼了.. 问题排查 问题背景 我们一共有6个开 ...

  2. java连接池详解与自定义es连接池

    目录 1 版本选择 2 依赖选择 3 使用commons-pool构造连接池 3.1 pom.xml 3.2 对象池类 GenericObjectPool普通对象池 GenericKeyedObjec ...

  3. mysql连接池耗尽_定时任务和jdbc连接池的耗尽问题

    最近在一个项目中使用spring的scheduling执行定时任务.简化一下需求,定时进行http请求,把请求的结果放入数据库,这里数据库连接使用c3p0连接池. 问题的描述: 执行了一段时间后,定时 ...

  4. HikariCP连接池8小时后只有一个连接或session问题

    项目中的一个批处理程序,需要长时间与数据库保持连接,属于典型的"写多读少"场景.监控的结果发现程序前8小时性能很好,之后就开始衰减. 用 show full process lis ...

  5. mysql连接池源码_WCDB-数据库连接池源码解析

    数据库类的简介 SQLiteOpenHelper: 管理SQLite的帮助类,提供获取SQLiteDatabase实例的方法, 它会在第一次使用数据库时调用获取实例方法时创建SQLiteDatabas ...

  6. 远端服务器无响应请检查网络,连接远程服务器超时请检查网络连接

    连接远程服务器超时请检查网络连接 内容精选 换一换 如果获取到的异常堆栈出现"System.Net.WebException: 无法连接到远程服务器 --->System.Net.So ...

  7. Druid连接池源代码分析之二-获取连接

    整体思路: 1:druid首先是连接池,DruidConnectionHolder[] 是通过对象数组来实现连接池的池子的,然后动态的维护下表,所以就要求并发性需要比较高,不然很容导致下表不准的现象. ...

  8. jedis 用连接池时超时返回值类型错误

    2019独角兽企业重金招聘Python工程师标准>>>      这个是今天发现一个bug:在测试redis并发读写的时候(jedis作为客户端,并使用了连接池),总是报 java. ...

  9. httpclient: 设置连接池及超时配置,请求数据:PoolingHttpClientConnectionManager

    public static void main(String[] args) throws Exception{//httpclient连接池//创建连接池PoolingHttpClientConne ...

最新文章

  1. Hadoop(Install)
  2. 机器学习笔记:高斯过程
  3. [C#(WebForm)] - 利用递归遍历文件夹和文件存入TreeView
  4. 中国蚁剑 代码解压出错:【object Object】解决方法
  5. Kafka JMX监控报错 Failed to get broker metrics for BrokerIdentity(128,192.168.2.128,9999,true,false,Map
  6. path r'c test.html',robot framework - robot命令参数解析
  7. centos7和scientific linux7里面调出中文输入法
  8. Java中Spring Cloud Ribbon
  9. 数据结构——二叉排序树
  10. android ios 对比 组件_Android和iOS的区别(从开发角度比较)
  11. Spring Cloud Ribbon 详解
  12. 计算机主机三短一长,电脑主机出现三短一长响声怎么办
  13. linux编译ace tao,ACE_TAO的编译
  14. css聊天气派,css如何实现小尖角聊天对话框带尖角的说话泡泡效果
  15. java 使用adobe fms流媒体
  16. 2022软工第二次个人作业
  17. Oracle数据库服务器端和客服端的安装
  18. 淘宝 美团 评论标签效果
  19. corex9服务器组装攻略,服务器级的X9机箱 只因“发烧”而生_Tt Core X9_机箱电源评测-中关村在线...
  20. 小白学redis总结笔记

热门文章

  1. AWS — AWS CloudFormation
  2. AWS — AWS 上的 5G 网络切片
  3. Go 语言编程 — panic 和 recover
  4. 用 Flask 来写个轻博客 (34) — 使用 Flask-RESTful 来构建 RESTful API 之三
  5. 用 Flask 来写个轻博客 (16) — MV(C)_Flask Blueprint 蓝图
  6. RJ-45接口连接线、MDI/MDIX接口
  7. 深度学习CTR预估模型凭什么成为互联网增长的关键?
  8. git提交过程中遇到的 index.lock 问题导致无法提交的解决方法
  9. leetcode题目解答报告(1)
  10. Centos安装tomcat,haproxy,jdk