Druid执行connection.close()仍然出现内存溢出问题

    技术2022-07-10  163

    今天测试遇到连续点击获取连接出现连接异常问题

    我这边用的连接池获取的connection.close在程序结尾进行连接关闭 但是继续点击获取连接会出现连接异常

    提示连接超时 活动连接10 最大连接10 (我这边默认的是10个连接)

    com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 20000, active 10, maxActive 10, creating 0 at com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1512) ~[druid-1.1.10.jar:1.1.10]

    几番调试发现即使关闭了连接 连接池的数量依然没有回收 导致数量叠加超出最大连接数

    解决方法:

    public static void close(Connection conn) throws SQLException { if (conn != null) DataSourceHelper.druidDataSources.get(DataSourceHelper.maxId).discardConnection(conn); // druidDataSource.discardConnection(conn); // conn.close(); }

    上面代码关联我的业务 只需要关注: 使用 druidDataSource.**discardConnection(conn)**去关闭即可

    Processed: 0.033, SQL: 9