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