[已解决] 生产环境线程死锁造成的服务器无响应错误-线上问题定位与解决方案

141 阅读1分钟

[已解决] 生产环境线程死锁造成的服务器无响应错误-线上问题定位与解决方案

文章目录

概述

最近团队有人遇到线程死锁的情况,在这里介绍一下情况,以及如何解决的

问题

首先讲讲是怎么知道出问题了,线上这个应用是4台机器负载,有用户反馈有的页面进入超卡,或者就是进不去。

定位

其实当时也是挺懵逼的,测试这边用账号进入,挺流畅的啊。后面根据几个用户提供的链路,发现页面卡的时候,链路请求的机器都是第1台机器的ip。

那么问题就简单很多了。

首先,通过链路直接去看机器上的日志,某几个方法请求的时候,基本都是超时。
通过error日志查看不出更多的问题。

那么看看jstack Dump 日志文件中的线程状态,下载机器的jstack日志进行一个分析。

在这里分享一个分析网站:
spotify.github.io/threaddump-…

可以在线将jstack的日志更加直观的展示出来。

分析后看到的日志很简单:

//... 省略
"car_lib_sync86": awaiting notific