[已解决] 生产环境线程死锁造成的服务器无响应错误-线上问题定位与解决方案
概述
最近团队有人遇到线程死锁的情况,在这里介绍一下情况,以及如何解决的
问题
首先讲讲是怎么知道出问题了,线上这个应用是4台机器负载,有用户反馈有的页面进入超卡,或者就是进不去。
定位
其实当时也是挺懵逼的,测试这边用账号进入,挺流畅的啊。后面根据几个用户提供的链路,发现页面卡的时候,链路请求的机器都是第1台机器的ip。
那么问题就简单很多了。
首先,通过链路直接去看机器上的日志,某几个方法请求的时候,基本都是超时。
通过error日志查看不出更多的问题。
那么看看jstack Dump 日志文件中的线程状态,下载机器的jstack日志进行一个分析。
在这里分享一个分析网站:
http://spotify.github.io/threaddump-analyzer/
可以在线将jstack的日志更加直观的展示出来。
分析后看到的日志很简单:
//... 省略
"car_lib_sync86": awaiting notific