druid activeCount持续变大,物理连接并没有增加如何排查?

5q4ezhmt  于 2022-10-21  发布在  Druid
关注(0)|答案(1)|浏览(371)

测试的版本 0.2.26--->1.0.15 --->1.1.10 都存在这个问题.
当activeCount等于maxActive的时候. 没有发起物理连接就报获取链接超时异常了.
0.2.26版本的 Druid-ConnectionPool-Create 线程会挂掉 1.0.15跟1.1.10 线程正常

<bean id="masterDataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
    <property name="url" value="jdbc:mysql://aliyun_rds_mysql_5.5/sys_data_admin?useLocalSessionState=true&amp;autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf-8"/>
    <property name="username" value="XXX"/>
    <property name="password" value=""/>
    <property name="maxActive" value="100"/>
    <property name="initialSize" value="1"/>
    <property name="maxWait" value="10000"/>
    <property name="minIdle" value="1"/>
    <property name="timeBetweenEvictionRunsMillis" value="3000"/>
    <property name="minEvictableIdleTimeMillis" value="300000"/>
    <property name="validationQuery" value="SELECT 'x'"/>
    <property name="testWhileIdle" value="true"/>
    <property name="testOnBorrow" value="false"/>
    <property name="testOnReturn" value="false"/>
    <property name="poolPreparedStatements" value="true"/>
    <property name="maxPoolPreparedStatementPerConnectionSize" value="20"/>
    <property name="connectionProperties" value="diamond-coord=XXXX.XXXX"/>
    <property name="passwordCallback" ref="passwordCallback"/>
</bean>

最近几天频繁 可以重现

dl5txlt9

dl5txlt91#

运行时获取状态
println(druidDataSource.getActiveCount() + "\t" + druidDataSource.getActivePeak() + "\t" + druidDataSource.getMaxActive());
74 87 100

从TCP获取数据库物理连接数量
netstat -anp|grep {dbip}|grep {pid}|wc
7

为了保留现场,不重启服务. 通过反射手动调低参数. 执行之后获取连接正常
Field activeCountField = DruidDataSource.class.getDeclaredField("activeCount");
activeCountField.setAccessible(true);
activeCountField.set(druidDataSource,30);

相关问题