当前位置:首页 > MySQL

连接泄漏监测

canca10年前 (2016-07-13)MySQL735

当程序存在缺陷时,申请的连接忘记关闭,这时候,就存在连接泄漏了。Druid提供了RemoveAbandanded相关配置,用来关闭长时间不使用的连接。例如:

配置

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"> ... ... <property name="removeAbandoned" value="true" /> <!-- 打开removeAbandoned功能 --> <property name="removeAbandonedTimeout" value="1800" /> <!-- 1800秒,也就是30分钟 --> <property name="logAbandoned" value="true" /> <!-- 关闭abanded连接时输出错误日志 --> ... ... </bean>

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

内置监控页面查看未关闭连接堆栈信息

当removeAbandoned=true之后,可以在内置监控界面datasource.html中的查看ActiveConnection StackTrace属性的,可以看到未关闭连接的具体堆栈信息,从而方便查出哪些连接泄漏了。

web应用

如果你的应用配置了WebStatFilter:https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_%E9%85%8D%E7%BD%AEWebStatFilter
在内置监控页面weburi-detail.html中,查看JdbcPoolConnectionOpenCount和JdbcPoolConnectionCloseCount属性,如果不相等,就是泄漏了。

扫描二维码推送至手机访问。

版权声明:本文由Ant.Master's Blog发布,如需转载请注明出处。

本文链接:https://iant.work/post/51.html

标签: MySQL
分享给朋友:

“连接泄漏监测” 的相关文章

小谈MySQL字符集

首先,这片文章纯粹是我的个人经验之谈,适用于我常见的环境及项目中.个人建议,数据库字符集尽量使用utf8(HTML页面对应的是utf-8),以使你的数据能很顺利的实现迁移,因为utf8字符集是目前最适合于实现多种不同字符集之间的转换的...…

MySql导入SQL文件

MySql导入SQL文件: mysql -u root -p <c:\sampledb.sql…

MySQL常用操作

1、字符串拼接:update products a,categorys b set a.categoryNumbers = concat(b.parent,",",a.categoryId,",")where b.id = a.categoryId…

sql语句查询经纬度范围

sql语句查询经纬度范围

指定一个经纬度,给定一个范围值(单位:千米),查出在经纬度周围这个范围内的数据。 经度:113.914619 纬度:22.50128 范围:2km longitude为数据表经度字段 latitude为数据表纬度字段 SQL在mysql下测…

in与exist , not in与not exist 的区别

in和existsin 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。一直以来认为exists比in效率高的说法是不准确的。如果查询的两个表大小相当,那么用in和exists差别不大。如果两个表中一个较小...…

mysqlbinlog恢复单个库特定时间段内的记录

mysql 5.0.xx ,一主一从,若干天以后,发现由于没有指定replicate-wild-do-table=stastics.%有一个库stastics 的数据没有从主库上同步过来。由于该库的记录仅顺序记录登陆信息,可以在尾部加上,所以先打开在线复制,再把截断的数据记录…

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。