使用Java spring 2.5(Tomcat容器)和HikariCP和连接池系统,我如何知道每个时刻有多少Java线程在工作,每个线程有多少数据库连接?
使用Java spring 2.5(Tomcat容器)和HikariCP和连接池系统,我如何知道每个时刻有多少Java线程在工作,每个线程有多少数据库连接?
当您使用像HikariCP这样的连接池时,存在物理和虚拟数据库连接.连接池根据需要打开物理连接,并分发作为物理连接包装的虚拟连接.虚拟连接只能短时间使用,关闭它们会返回到池的物理连接.
从这个意义上讲,每个线程不应该阻塞多个虚拟连接.要查找线程不返回虚拟连接的情况,可以在JProfiler中使用JDBC连接泄漏检测.它将向您显示已打开很长时间且可能存在连接泄漏的虚拟连接.如果记录CPU数据,还可以看到堆栈跟踪,其中线程请求了每个这样的连接.
为了详细分析连接使用情况,JDBC探测器的"事件"视图可以显示所有执行的语句,还可以显示哪些线程打开和关闭物理数据库连接以及时间戳.
免责声明:我公司开发JProfiler