我的系统在连接池中遇到一些连接泄漏。我想定期列出连接池的一些统计信息,我该怎么做?例如,Current Capacity,Active Connections High Count,Connections Total Count,Leaked Connection Count等
我正在使用javax.sql.DataSource
从连接池中检索连接。但我找不到任何可以检索这些连接池信息的接口。有什么想法吗?
我正在使用Oracle DB和Java EE
作为我的服务器端脚本。
答案 0 :(得分:1)
javax.sql.DataSource
是一个接口,它只是抽象数据源。它不涉及提供池化连接。
连接池负责提供与数据库(数据源)的池化,可重用连接。
首先,您需要找出您正在使用的连接池。连接池实现通常提供一种查询活动连接数等方法的方法。
例如,Apache DBCP有一个BasicDataSource类,它是一个连接池,它有一个方法:
BasicDataSource.getMaxTotal();
BasicDataSource.getNumActive();
BasicDataSource.getNumIdle();
BasicDataSource.getMinIdle();
BasicDataSource.getMaxIdle();
由于您提到您正在使用Oracle DB,因此您的连接池很可能是OracleOCIConnectionPool(Oracle JDBC驱动程序的一部分),它提供:
OracleOCIConnectionPool.getMaxLimit();
OracleOCIConnectionPool.getPoolSize();
OracleOCIConnectionPool.getActiveSize();
OracleOCIConnectionPool.getMinLimit();