连接池中的连接不会空闲

时间:2015-11-12 16:37:31

标签: java database connection

我有一个程序,使用单线程工作流程对数据库执行频繁请求。请求需要在彼此相隔一秒或更短的时间内获得连接,但是在打开新连接之前应始终关闭一个连接。

但是,随着时间的推移,我的调试显示连接速度相当快。似乎连接开始成倍增加,并最终达到程序挂起的点,因为连接池的最大值(当前使用的是BoneCP)已被填充。我将最大值设置为15,但是当它处于默认数字时它具有类似的行为(我相信8)。

我使用try-with-resource语句(类似于下面的语句)来关闭连接。

//Connection example
//Connection pool is configured.
DataSource source = new DataSource();
try (Connection con = source.getConnection();
        PreparedStatement stmt = con.prepareStatement(query) {
    //Do SQL stuff
} catch (SQLException e) {
    //Handle Exception
}

如果我理解尝试使用资源,则应自动关闭连接,并将其返回池中。由于这不起作用,我尝试添加con.close()语句以尝试更好地处理连接。这在数量上似乎有所帮助,但我不确定它在现实中做了什么。

为什么要创建如此多的连接,以及如何更好地管理我的连接,以便我不创建这么多?

0 个答案:

没有答案