使用Java spring 2.5(Tomcat容器)和HikariCP和连接池系统,我如何知道每个时刻有多少Java线程在工作,每个线程有多少数据库连接?

推荐答案

当您使用像HikariCP这样的连接池时,存在物理和虚拟数据库连接.连接池根据需要打开物理连接,并分发作为物理连接包装的虚拟连接.虚拟连接只能短时间使用,关闭它们会返回到池的物理连接.

从这个意义上讲,每个线程不应该阻塞多个虚拟连接.要查找线程不返回虚拟连接的情况,可以在JProfiler中使用JDBC连接泄漏检测.它将向您显示已打开很长时间且可能存在连接泄漏的虚拟连接.如果记录CPU数据,还可以看到堆栈跟踪,其中线程请求了每个这样的连接.

enter image description here

为了详细分析连接使用情况,JDBC探测器的"事件"视图可以显示所有执行的语句,还可以显示哪些线程打开和关闭物理数据库连接以及时间戳.

enter image description here

免责声明:我公司开发JProfiler

Java相关问答推荐

如何在Spring Security中设置CustomLogin路径?

为什么我们仍然需要实现noArgsConstructor如果Java默认提供一个非参数化的构造函数?''

为什么BasicComboBoxRenderer在文本不存在或文本为空的情况下设置两次文本?

如何使用AWS CLI从S3存储桶中的所有对象中删除用户定义的元数据?

JavaFX Maven Assembly插件一直打包到错误的JDK版本

具有阻塞方法的开源库是否应该为执行提供异步选项?

Com.google.firebase.database.DatabaseException:无法将类型为java.lang.Boolean的值转换为字符串.这是关于什么的?

JOOQ中的子查询使用的是默认方言,而不是配置的方言

Java ArrayList的整数和数组的泛型

如何只修改父类ChroniclerView位置0处的第一个嵌套ChroniclerView(child)元素?

为什么我的回收视图会显示重复的列表?

内存和硬盘中的Zip不同,这会导致下载后的Zip损坏

在Java中将int[]矩阵添加到ArrayList中,但出现错误

由于在生成器模式中使用泛型,lambda表达式中的返回类型错误

具有最大共同前景像素的图像平移优化算法

我的代码是线程安全的吗?[Java、CAS、转账]

如何将RESTAssured';S的Http标题转换为<;字符串、字符串和>的映射?

如何在Spring Boot中为不同的部署环境管理多个.properties文件?

如何在单元测试中获得我的装饰Mapstruct映射器的实例?

错误:JOIN/ON的参数必须是boolean类型,而不是bigint类型.Java Spring启动应用程序