java - 在 Java 应用程序中查找连接泄漏

标签 java oracle connection-leaks

我有一个应用程序在一段时间后开始给我内部服务器错误,我问过一些人告诉我这可能是因为我的应用程序中的连接泄漏。我开始搜索并找到了这个模拟连接泄漏的查询。

选择 LAST_CALL_ET、SQL_TEXT、用户名、机器、to_char(logon_time、'ddMon hh24:mi') 作为登录、SQL_HASH_VALUE、PREV_HASH_VALUE、来自 v$session 的状态、v$sql where username='USERNAME' 和 HASH_VALUE = PREV_HASH_VALUE 按 last_call_et desc; 排序;

我使用此查询监视了我的应用程序,并关闭了此结果中显示的查询的所有泄漏连接。但是现在我的应用程序开始为更少的非 Activity session 提供相同的错误。 我是否使用正确的查询来找出 Activity session /连接泄漏?有人告诉我这个查询中的条件 HASH_VALUE = PREV_HASH_VALUE 是错误的,但我不知道这些列(没有太多的数据库知识。)

谢谢

最佳答案

如果您需要找出泄漏,您可以使用类似 yourkit 的分析器或 jprofiler它能够跟踪套接字/jdbc 泄漏。

要修复泄漏,您必须找出打开连接的位置,并使用 try-with-resources,它将为您完成所有 close() 操作

try (Connection conection = DriverManager.getConnection(url);
     PreparedStatement statement = createPreparedStatement(conection); 
     ResultSet resultSet = statement.executeQuery()) {
     // process the resultSet here, all resources will be cleaned up
}

关于java - 在 Java 应用程序中查找连接泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39474430/

相关文章:

oracle - oracle 10g 和 9i 之间巨大的查询执行时间差异

sql-server - 如何跟踪数据库连接泄漏

asp.net - 如何检测 ASP.net 应用程序中的 SqlServer 连接泄漏?

java - 如何迭代 Hashmap 并与同一 Hashmap 中的其他键进行组合以比较它们的对象

oracle - 如何在 OracleAQ 队列上将 max_retries 设置为无限制

java - 如何在 IBM WebSphere 7.0 中的所有应用程序中更改 .jsp 处理错误页面

oracle - Glorp 和 Oracle : limiting query result

postgresql - jdbcTemplate 连接泄漏到 Spring Boot 中的 postgresql 数据库

java - Camel-Castor 在解码和编码时出错,它也没有使用映射文件

java - Mobicents - JAIN-SIP-RI 不会重新传输错误邀请响应