postgres中的封闭连接仍处于空闲状态

时间:2015-05-19 07:44:38

标签: java spring postgresql tomcat connection-pooling

问题:如下所示创建的已关闭连接在idle数据库中保留postgres

public class MyConnectionHandler() implements AutoCloseable {
    private Connection connection;
    private CopyManager copymanager;

    public void init() {
        //need the following in order to work with postgres COPY api
        connection = ((PooledConnection) dataSource.getConnection()).getConnection();
        copymanager = ((Jdbc4Connection) connection).getCopyAPI();
    }

    @Override
    public void close() {
        connection.close();
    }
}

我在tomcat-jdbc的上下文中使用spring-boot提供的tomcat池。但这对我的问题无关紧要:

当我创建连接并在之后关闭它时,连接仍在我的数据库中空闲。 select * from pg_stat_activity在那里我仍然可以看到连接,尽管它们是明确关闭的。

这意味着,如果我在一天中创建10个连接,并在一段时间后关闭它们,则连接将不断增长。它们永远不会从数据库中删除。

可能是什么问题?为什么即使关闭状态,他们仍然处于州idle状态? 只有当我关闭我的java程序时,连接才被删除(当然)。

我还尝试设置以下spring属性,而不会对空闲连接产生任何影响:

spring.datasource.initial-size=1
spring.datasource.max-idle=1
spring.datasource.min-idle=1

0 个答案:

没有答案