我正在尝试追踪泄漏的连接。 (特别是,我注意到连接在最后一个 DataSource 关闭后保持打开状态,使用 C3P0 进行连接池。我怀疑是一个错误,但首先要确保我不只是愚蠢。)
有没有一种从 Postgres View 关联打开的连接的好方法
postgres=# select * from pg_stat_activity; datid | datname | procpid | usesysid | usename | current_query | waiting | xact_start | query_start | backend_start | client_addr | client_port 11564 | postgres | 95709 | 10 | postgres | select * from pg_stat_activity; | f | 2010-07-25 14:20:24.97529-07 | 2010-07-25 14:20:24.97529-07 | 2010-07-25 14:20:19.066576-07 | | -1 (1 row)
它们在 Java/JDBC 代码中打开的位置? (或者也许是一些独特的字符串等) 看来这应该是个有用的东西!
最佳答案
Postgresql 9 支持 application_name可以通过这种方式读取的设置,但是之前版本的服务器中没有类似的设置。
在 JBoss 中,我们有一个连接保护系统,它会在连接打开时在内部抛出并捕获异常,以便捕获回溯,然后将其与连接一起存储。然后,如果在事务结束时连接未关闭,则会记录该回溯并带有警告。我猜想,有可能将该策略应用到通用数据源装饰器层中,并定期清除跟踪的连接,以查找在 10 分钟内(或大于预期生命周期的某个时间)未使用但未关闭的连接。
关于java - 将 Postgres 连接与 Java 代码相关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3331074/