问题:如下所示创建的已关闭连接在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