【发布时间】:2017-07-29 15:39:21
【问题描述】:
我看到空闲连接没有被清除。不知道是什么原因?
initialSize-10 maxtotal-20 最大 10 迷你-0 minEvictableIdleTimeMillis-30min numTestsPerEvictionRun-60 分钟 numTestsPerEvictionRun-20 testOnBorrow-true testWhileIdle-true validationQuery-select 1 from dual
从各种来源提供的以下是我的理解 与 Datasource 的 maxtotal- maxactive 连接数在上述情况下为 20
maxidle- 可以保留在池中的空闲连接数。这些被清扫机清除。在上述情况下,如果连接保持空闲 30 分钟,则该连接处于空闲状态。如果清扫器每 60 分钟运行一次,它会检查 20 个空闲连接并清除空闲连接。超过此值的空闲连接将立即关闭。
以上理解正确吗?
我正在使用 BasicDataSourceMXBean 打印统计数据
{"NumActive":"0","NumIdle":"10","isClosed":"false","maxTotal":"20","MaxIdle":"10","MinIdle":"0 "}
即使没有流量,空闲连接也不会被清除。上面的配置有什么问题吗?
还有什么是 minIdle,我们什么时候应该将它设置为非零值?
最近将休眠版本从 3.6.0.Final 升级到休眠 4.3.11.Final 并从旧的 spring 版本升级到 4.2.9。
之前空闲的连接被清除了。但是自从升级以来,空闲连接并没有被清除。
【问题讨论】:
-
您确定设置不应该是
testWhileIdle而不是testOnIdle以便驱逐空闲连接吗?
标签: spring hibernate jdbc database-connection apache-commons-dbcp