java 中与 Postgresql 的连接过多

Too many connection to Postgresql in java

我将 postgresql 用于数据库,但遇到连接问题。项目很大,内部流程很多,也很复杂。。。有时候,app创建了很多连接,db里面就没有连接了,app卡死了。问题不在数据库中,而是在应用程序中。

当我查看 pg_stat_activity 时,我看到了所有连接,它们的查询是 select 1(连接打开时发生的第一个查询,用于验证连接)。因此,该应用程序似乎打开了一个连接,但并未使用它。当有很多这样的...你知道...

我不知道从哪里开始,在代码中,连接打开了。

是否有 technic/tool 供 java/postgres 知道他们来自哪里?

光是看代码就会花很长时间。

PostgreSQL 没有直接在应用程序源中查找内容的功能。

您只能尝试使用正确的 log_line_prefixlog_statement 参数在 PostgreSQL 端启用更详细的日志记录:这只有在语句是从特定的可执行文件或主机提交时才有用(因为相关的记录数据可以帮助找到正确的代码部分)。

如果应用程序启动了一个空闲时间过长的事务,您可以设置idle_in_transaction_session_timeout

不幸的是,PostgreSQL 对于非 运行 事务的空闲会话没有超时。