使⽤druid连接池的超时回收机制排查连接泄露问题
druid连接池配置详解在⼯程中使⽤了druid连接池,运⾏⼀段时间后系统出现异常:
Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60009, active 50                at org.springframework.jdbc.Connection(DataSourceUtils.java:80)
at org.springframework.jdbc.actDatabaseMetaData(JdbcUtils.java:280)
... 64more
Caused by: com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60000, active 50
at com.alibaba.druid.ConnectionInternal(DruidDataSource.java:1071)
at com.alibaba.druid.ConnectionDirect(DruidDataSource.java:898)
at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:4544)
mysql数据库最⼤连接数设置为500,使⽤客户端能正常连接。连接数被未被占满。
分析原因应该是程序中有地⽅连接未关闭造成的。那如何来定呢?使⽤druid连接池的超时回收机制,在配置中增加以下内容:
<!-- 超过时间限制是否回收 -->
<property name="removeAbandoned" value="true"/>
<!-- 超时时间;单位为秒。180秒=3分钟 -->
<property name="removeAbandonedTimeout" value="180"/>
<!-- 关闭abanded连接时输出错误⽇志 -->
<property name="logAbandoned" value="true"/>
运⾏程序,当连接超过3分钟后会强制进⾏回收,并输出异常⽇志。
2014-10-1316:02:28,919 ERROR [com.alibaba.druid.pool.DruidDataSource] - <abandon connection, open stackTrace
at java.StackTrace(Thread.java:1567)
at com.alibaba.druid.ConnectionDirect(DruidDataSource.java:995)
at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:4544)
at com.alibaba.druid.filter.stat.StatFilter.dataSource_getConnection(StatFilter.java:661)
at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:4540)
at com.alibaba.druid.Connection(DruidDataSource.java:919)
at com.alibaba.druid.Connection(DruidDataSource.java:911)
at com.alibaba.druid.Connection(DruidDataSource.java:98)
PaginationInterceptor.intercept(PaginationInterceptor.java:96)
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:60)
at com.sun.proxy.$Proxy59.query(Unknown Source)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:108)
很清楚地看到是在哪⾥打开的连接未关闭⼀直在占有。
此配置项会影响性能,只在排查的时候打开。系统运⾏时最好关闭。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。