【问题标题】:JDBC connectionsJDBC 连接
【发布时间】:2014-10-06 15:20:03
【问题描述】:

我有几个关于 JDBC 连接的问题。

  • 有什么方法可以查看使用的 JDBC 连接吗?
  • 例如,如果我将 JDBC 连接限制为 100,如果我到达已用 jbdc 连接的顶部,如何在不重新启动服务器的情况下释放它们?

谢谢

【问题讨论】:

    标签: jdbc connection pool


    【解决方案1】:
    1. 这取决于池/服务器。但这是一个非常不稳定的信息。通常在事务期间(几毫秒)从池中检索连接,然后将其添加回池中。而在一个典型的企业应用程序上,每秒有很多很多事务。因此,在您查看连接时,已使用的连接数已经发生了变化。

    2. 如果您的意思是要关闭在给定时间内未使用的连接(即缩小池的大小),那么再一次,这是一个取决于您的池的配置重新使用。他们中的大多数人都允许这样做。阅读您的池文档。

    【讨论】:

    • @user2091010 你的问题到底是什么?你想让我们告诉你什么?我们所知道的是,您在未知服务器中使用了一个未知池,并且在不知道如何缩小它的情况下尝试缩小它,并且看到连接没有关闭但没有解释您是如何得出结论的。
    【解决方案2】:

    如果您使用的是 DBCP2,那么您可以打印未关闭的活动连接。 在这里,该类扩展了 BasicDataSource,并覆盖了 getConnection 方法。

    try {String className = Thread.currentThread().getStackTrace()[2].getClassName();
            LOG.info("For class :: " + className + " || " + "max total connections :: " + super.getMaxTotal()+ " || "   +"  Active Connections count :: "+ super.getNumActive());
    
            connection = super.getConnection();
    
        }catch (SQLException e) {
            LOG.error("SQL Exception in Connection", e);
        }
    

    【讨论】:

      猜你喜欢
      • 2011-10-10
      • 2018-05-01
      • 2011-08-15
      • 2011-05-07
      • 2016-07-06
      • 2011-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多