使用druid连接池的超时回收机制排查连接泄露问题
参考:http://www.cnblogs.com/netcorner/p/4380949.html
在工程中使用了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.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80)
- at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:280)
- ... 64 more
- Caused by: com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60000, active 50
- at com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1071)
- at com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(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-13 16:02:28,919 ERROR [com.alibaba.druid.pool.DruidDataSource] - <abandon connection, open stackTrace
- at java.lang.Thread.getStackTrace(Thread.java:1567)
- at com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(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.pool.DruidDataSource.getConnection(DruidDataSource.java:919)
- at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:911)
- at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:98)
- at cn.org.xxx.xxx.xxx.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)
很清楚地看到是在哪里打开的连接未关闭一直在占有。
此配置项会影响性能,只在排查的时候打开。系统运行时最好关闭。
使用druid连接池的超时回收机制排查连接泄露问题相关推荐
- druid连接池 - 长时间阻塞问题排查
前言 最近参与一个新项目,从老项目拷贝过来的代码,同样用的druid连接池 + PG.但是新项目却经常出现阻塞的情况,有时候甚至可以阻塞半个小时.一时间傻眼了.. 问题排查 问题背景 我们一共有6个开 ...
- java连接池详解与自定义es连接池
目录 1 版本选择 2 依赖选择 3 使用commons-pool构造连接池 3.1 pom.xml 3.2 对象池类 GenericObjectPool普通对象池 GenericKeyedObjec ...
- mysql连接池耗尽_定时任务和jdbc连接池的耗尽问题
最近在一个项目中使用spring的scheduling执行定时任务.简化一下需求,定时进行http请求,把请求的结果放入数据库,这里数据库连接使用c3p0连接池. 问题的描述: 执行了一段时间后,定时 ...
- HikariCP连接池8小时后只有一个连接或session问题
项目中的一个批处理程序,需要长时间与数据库保持连接,属于典型的"写多读少"场景.监控的结果发现程序前8小时性能很好,之后就开始衰减. 用 show full process lis ...
- mysql连接池源码_WCDB-数据库连接池源码解析
数据库类的简介 SQLiteOpenHelper: 管理SQLite的帮助类,提供获取SQLiteDatabase实例的方法, 它会在第一次使用数据库时调用获取实例方法时创建SQLiteDatabas ...
- 远端服务器无响应请检查网络,连接远程服务器超时请检查网络连接
连接远程服务器超时请检查网络连接 内容精选 换一换 如果获取到的异常堆栈出现"System.Net.WebException: 无法连接到远程服务器 --->System.Net.So ...
- Druid连接池源代码分析之二-获取连接
整体思路: 1:druid首先是连接池,DruidConnectionHolder[] 是通过对象数组来实现连接池的池子的,然后动态的维护下表,所以就要求并发性需要比较高,不然很容导致下表不准的现象. ...
- jedis 用连接池时超时返回值类型错误
2019独角兽企业重金招聘Python工程师标准>>> 这个是今天发现一个bug:在测试redis并发读写的时候(jedis作为客户端,并使用了连接池),总是报 java. ...
- httpclient: 设置连接池及超时配置,请求数据:PoolingHttpClientConnectionManager
public static void main(String[] args) throws Exception{//httpclient连接池//创建连接池PoolingHttpClientConne ...
最新文章
- Hadoop(Install)
- 机器学习笔记:高斯过程
- [C#(WebForm)] - 利用递归遍历文件夹和文件存入TreeView
- 中国蚁剑 代码解压出错:【object Object】解决方法
- Kafka JMX监控报错 Failed to get broker metrics for BrokerIdentity(128,192.168.2.128,9999,true,false,Map
- path r'c test.html',robot framework - robot命令参数解析
- centos7和scientific linux7里面调出中文输入法
- Java中Spring Cloud Ribbon
- 数据结构——二叉排序树
- android ios 对比 组件_Android和iOS的区别(从开发角度比较)
- Spring Cloud Ribbon 详解
- 计算机主机三短一长,电脑主机出现三短一长响声怎么办
- linux编译ace tao,ACE_TAO的编译
- css聊天气派,css如何实现小尖角聊天对话框带尖角的说话泡泡效果
- java 使用adobe fms流媒体
- 2022软工第二次个人作业
- Oracle数据库服务器端和客服端的安装
- 淘宝 美团 评论标签效果
- corex9服务器组装攻略,服务器级的X9机箱 只因“发烧”而生_Tt Core X9_机箱电源评测-中关村在线...
- 小白学redis总结笔记
热门文章
- AWS — AWS CloudFormation
- AWS — AWS 上的 5G 网络切片
- Go 语言编程 — panic 和 recover
- 用 Flask 来写个轻博客 (34) — 使用 Flask-RESTful 来构建 RESTful API 之三
- 用 Flask 来写个轻博客 (16) — MV(C)_Flask Blueprint 蓝图
- RJ-45接口连接线、MDI/MDIX接口
- 深度学习CTR预估模型凭什么成为互联网增长的关键?
- git提交过程中遇到的 index.lock 问题导致无法提交的解决方法
- leetcode题目解答报告(1)
- Centos安装tomcat,haproxy,jdk