一次排查Jvm线程飙升问题的经历

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一次排查Jvm线程飙升问题的经历相关的知识,希望对你有一定的参考价值。

参考技术A 可看到jvm线程少说几百,多则几千甚至过万,并且如果服务不重启,可发现线程数随着时间的推移持续上升,并且没有下降趋势,因此可以看出服务中一定有某些编码没有使用线程池,在持续的new Thread()创建线程,导致线程数飙升。

由于线上服务是云部署,在我们公司开发是没有权限登录服务终端查看应用jvm情况,包括线程信息,所以给定位带来的很多困难。

起初我们定位问题方案是通过测试环境开启Spring Actuator监控,通过访问 /actuator/threaddump获取运行时的线程dump信息,相当于直接在终端执行jstack命令获取jvm线程信息。然后在测试环境观察线程数量变化,通过几次的对比去判断哪些线程名在持续飙升,进而定位问题。

无奈。就开始实现二套方案,直接找运维配合导出线上实例机器上的jvm-thread dump文件,然后直接分析thread-dump文件定位问题,文件大致内容如下。

https://download.csdn.net/download/qianyan0365/15419859

以上是关于一次排查Jvm线程飙升问题的经历的主要内容,如果未能解决你的问题,请参考以下文章

记一次new ArrayList导致的cpu飙升问题排查

cpu飙升怎么排查

面试连环炮系列:服务器CPU飙升100%怎么排查

关于CPU飙升时的排查过程

cpu飙升问题排查思路

Java应用线上问题排查思路