有没有办法检查数据源使用的连接数?
我在我的Web应用程序中遇到了connectionwaittimeout异常,因此要检查哪个函数正在使用更多连接或不释放任何连接,我想检查数据源在任何时候使用的连接数。
答案 0 :(得分:0)
根据您的DataSource的实现,您可能可以访问某些可配置属性。例如,来自apache-commons的BasicDataSource.removedAbandonned允许回收连接回池的连接,如果它已被使用了太长时间。 但是当然你应该回到你的代码并确保在try-catch-finally块(或新的Java 7 try-with resources语法)中正确关闭任何手动借用的Connections
答案 1 :(得分:0)
在WebSphere Application Server中,您至少有两个可以帮助您的功能:
1)PMI(绩效监测基础设施)
您可以在Datasoruce上启用各种计数器并对其进行监控。有关详细信息,请参阅JDBC counters。对我来说最有用的是FreePoolSize
,PercentUsed
以查看池利用率,WaitingThreadCount
和WaitTime
以查看是否有任何线程正在等待多长时间JDBCTime
和UseTime
查看与连接时间相比的平均查询时间。
2)连接泄漏检测
WebSphere包含跟踪设置,允许您在出现ConnectionWaitTimoutException时转储连接池。有关如何配置和使用它的详细说明,请参阅以下pdf - Understanding and Resolving ConnectionWaitTimeoutExceptions