Druid的存活检测问题
概述
在Druid数据库连接池中有两个参数,分别为: testWhileIdle,timeBetweenEvictionRunsMillis 根据字面意思理解是连接池会定时的对处于idle状态的连接进行一次存活检测, 目的是为了防止返回一个已经关闭的JDBC的连接给应用使用。 但是在本地验证该参数的行为的时后,发现并不是如上的期望。 如果配置了该参数,Druid会在每一次应用获取连接的时后,进行一次存活检测, 如果发现连接不可用,那么就从connection pool中重新获取一个connection返回给应用。 如下是本地的验证的一个过程。
验证过程
在本地启动Java应用,应用直连数据库,配置Druid每间隔30秒进行一次链接检测, 配置数据库的max_timeout为60秒,validationQuery为SELECT 1,如下: