为了账号安全,请及时绑定邮箱和手机立即绑定

Spring应用启动hang住了,如何快速确定是哪个线程导致hang的呢?

Spring应用启动hang住了,如何快速确定是哪个线程导致hang的呢?

叮当猫咪 2019-02-04 00:02:35
请教个问题:如果你刚接手了一个陌生Spring应用,应用在启动的过程中hang住了,Spring容器并没有启动完成也没有失败就一直hang在那里。业务日志中并没有明显的错误日志(可以确定是外部依赖导致的),更多是一些中间件系统的正常日志,那要如何定位是什么导致启动失败呢?我的尝试:1.通过日志企图找到蛛丝马迹(搜寻了基本日志没有发现明显错误) 2.多次thread dump企图看是否有明显死锁、阻塞线程问题(失败) 3、继续thread dump企图找到导致hang的原因 我的经验:长时间hang可能是需要下载某些东西,但一直下载不下来(可能是网络、内存等原因);外部依赖没有超时熔断而是一直在重试。。。。我的疑问:在第三个尝试中,由于在一个复杂的系统中会依赖各种各样的中间件等外部系统,spring容器已经加载了一部分的bean,这样thread dump中会有各种各样的线程处于不同的状态,那一个新系统如何快速确定是哪个线程导致hang的呢?当然经验很足或者对系统很熟悉可能更快。当然很多人的答案都是具体情况具体分析,但你哪些经验可以分享呢?
查看完整描述

1 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

1、jps
2、jstack pid

看看线程都在干什么


查看完整回答
反对 回复 2019-02-04
  • 1 回答
  • 0 关注
  • 664 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信