在 JDBC 中关闭后 Postgresql 连接保持空闲

Posted

技术标签:

【中文标题】在 JDBC 中关闭后 Postgresql 连接保持空闲【英文标题】:Postgresql connections stay idle after close in JDBC 【发布时间】:2012-10-08 00:45:16 【问题描述】:

我仔细检查了我的代码,并且我在 finally 块中有 conn.close 但是当我执行 SELECT * FROM pg_stat_activity;我看到许多空闲连接。我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

最可能的原因是您的应用程序正在使用连接池。如果是这样,池将抓取连接并保持其中一部分打开,以便可以重用它们。在执行另一个命令或关闭应用程序之前,连接将显示为 IDLE。

如果连接没有被关闭,您可能会看到类似 IDLE - In Transaction 的内容,这意味着连接已打开并等待执行提交或回滚,但未收到任何命令。

另外,我知道你说你关闭了连接,所以我不确定这是否适用于你,但我只是想抛出我过去也遇到过问题,因为没有明确关闭 PreparedStatements。

【讨论】:

请注意,大多数连接池都会为您提供一个 Connection 实例,该实例的“close()”方法不会关闭底层连接,而只是将其返回到池中以便可以重复使用。您可能希望将池配置为仅在有限的时间内保持空闲连接。

以上是关于在 JDBC 中关闭后 Postgresql 连接保持空闲的主要内容,如果未能解决你的问题,请参考以下文章

为什么我们应该在JDBC中关闭连接?如果我们不这样做,会发生什么

Android上的Postgresql JDBC连接错误

如何让 PostgreSQL DBLink 连接与 JDBC 一起使用?

HikariPool-1 - 无法验证连接 org.postgresql.jdbc.PgConnection@2a84e649(此连接已关闭。)

如何设置远程连接到 postgresql 数据库的 jdbc 连接超时值?

Tomcat 在数据库重新启动时未重新连接 PostgreSQL JDBC 池