java mybatis数据库连接的自动回收机制 removeAbandoned

<!-- 打开removeAbandoned功能:连接泄漏监测 -->
<property name="removeAbandoned" value="true"/>
<property name="removeAbandonedTimeout" value="1800"/>
<!-- 打开abandoned连接时输出错误日志 -->
<property name="logAbandoned" value="true"/>

有时粗心的程序编写者在从连接池中获取连接使用后忘记了连接的关闭,这样连池的连接就会逐渐达到maxActive直至连接池无法提供服务。

现代连接池一般提供一种“智能”的检查,但设置了removeAbandoned=”true”时,当连接池连接数到达(getNumIdle() < 2) and (getNumActive() > getMaxActive() - 3) [空闲的连接小于2并且活动的连接大于(最大连接-3)]时便会启动连接回收,系统会进行无效的Connection的回收,回收的Connection为removeAbandonedTimeout=”60”(默认300秒)中设置的秒数后没有使用的Connection。那种活动时间超过removeAbandonedTimeout=”60”没有使用的连接将会被回收,同时如果logAbandoned=”true”设置为true,程序在回收连接的同时会打印日志。在log中打印出回收Connection的错误信息,包括在哪个地方用了Connection却忘记关闭了,在调试的时候很有用。

removeAbandoned是连接池的高级功能,理论上这中配置不应该出现在实际的生产环境,因为有时应用程序执行长事务,可能这种情况下,会被连接池误回收,该种配置一般在程序测试阶段,为了定位连接泄漏的具体代码位置,被开启。生产环境中连接的关闭应该靠程序自己保证。

参考 https://blog.csdn.net/xingshi89/article/details/46539061

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值