You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何WebLogic中LeakedConnectionCount始终显示为0?

解决WebLogic LeakedConnectionCount不增长的问题

首先咱们得明确WebLogic标记连接为「泄漏」的核心逻辑:它不会在连接借出未归还时立刻统计到LeakedConnectionCount,而是要等连接泄漏超时时间(默认300秒/5分钟)过后,才会将未归还的连接计入泄漏计数。你现在看到Connection Unavailable count到10但泄漏计数为0,大概率是还没到超时时间,或者数据源的泄漏检测配置没正确开启。

下面是具体的排查和解决步骤:

1. 确认WebLogic数据源的泄漏检测配置

先登录WebLogic控制台,找到目标数据源:

  • 进入数据源的Configuration -> Connection Pool -> Advanced标签页
  • 确保Connection Leak Timeout已设置(测试时建议设为30秒,方便快速验证)
  • 确认Remove Infected Connections Enabled为true(默认开启,该选项会标记泄漏连接为「受感染」,后续不再复用)

2. 调整测试流程,等待泄漏超时

你的测试代码需要先触发连接泄漏,再等待超过设置的泄漏超时时间,最后查询泄漏计数。修改main方法如下:

public static void main(String[] args) throws InterruptedException {
    // 先执行泄漏连接的代码
    leakDatabaseConnections();
    // 等待超过泄漏超时时间(假设你设置的是30秒,这里等35秒)
    Thread.sleep(35000);
    // 再查询泄漏状态
    Test test = new Test();
    System.out.println(test.isConnectionLeaked());
}

// 模拟未关闭连接的泄漏场景
private static void leakDatabaseConnections() {
    try {
        // 通过JNDI获取数据源(替换为你的数据源JNDI名称)
        InitialContext ctx = new InitialContext();
        DataSource ds = (DataSource) ctx.lookup("your-datasource-jndi-name");
        
        // 循环获取10个连接,不关闭,触发泄漏
        for (int i = 0; i < 10; i++) {
            Connection conn = ds.getConnection();
            System.out.println("获取连接 " + (i+1) + " 未关闭");
        }
    } catch (NamingException | SQLException e) {
        e.printStackTrace();
    }
}

3. 验证代码中的数据源名称匹配

检查getDataSourceNames()方法返回的名称,是否和WebLogic控制台里的数据源名称完全一致(包括大小写)。如果名称不匹配,代码会遍历到错误的数据源实例,自然查不到正确的泄漏计数。

你可以在代码里打印所有遍历到的数据源名称,确认是否包含目标数据源:

logger.info("********* 遍历到的数据源: " + poolName + " ******");

4. 确认JMX用户权限

确保用于JMX连接的用户拥有足够权限(比如Monitor或Admin角色),否则可能无法访问JDBCDataSourceRuntimeMBeans的LeakedConnectionCount属性。

额外提示:连接泄漏的正确验证

要确保测试代码确实没有关闭资源——比如没有在finally块中关闭Connection、PreparedStatement、ResultSet,也没有使用try-with-resources语法(自动关闭资源)。如果资源被正确关闭,自然不会产生泄漏。

内容的提问来源于stack exchange,提问作者Pankaj Sonagara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:17:31