正在创建的未知线程池

问题描述 投票:0回答:1

我们有spring boot微服务,有几个库作为依赖。例如Jest(弹性搜索),Hikari,Spring-Rabbit,FasterXml等等。

在分析了线程转储后,我们发现正在创建2个未知池。在普通开发机器上,这些池包含8到10个线程。但是在prod环境中,我们观察到每个池有66个线程。线程池名称是自动生成的,如pool-7,pool-2等。

我们想找出哪个java类/库正在创建这个线程池并生成线程。尝试使用oracle飞行记录仪,但即使在那里我们也看不到这些线程的起源。

有人可以建议找出谁创建这些线程的方法吗?

谢谢,Smita

spring-boot threadpool jestjs spring-boot-actuator
1个回答
1
投票

令人遗憾的是,Flight Recorder中的威胁启动事件不会记录Thread #start方法中的堆栈跟踪。我将看看它是否可以添加到未来的JDK版本中。但是,您应该能够看到启动新线程的线程。

如果你找不到其他工具来帮助你,我能想到的唯一方法就是自己测试java.lang.Thread #start方法。要么使用字节码检测,要么只是克隆OpenJDK,修改java.lang.Thread的源文件并构建自己的自定义JDK。最后一步可能听起来令人生畏,但如果您使用的是JDK 8或更高版本,则并不难。

hg clone http://hg.openjdk.java.net/jdk8/jdk8
cd jdk8
bash get_source.sh
bash configure
make images

当您克隆时,根目录中有一个README文件,如果您遇到问题,它将指向您进一步的说明。

© www.soinside.com 2019 - 2024. All rights reserved.