死锁问题定位与分析

死锁问题定位与分析

一.环境搭建

1.准备脚本,执行压测

2.用jstack 打印日志

jstack 112759 >dead.log

3.下载日志到本地

sz dead.log

二.问题定位

1.打开dead.log

搜索deadlock

2.查看死锁的线程

3.查看死锁位置

三.问题分析

1.下载死锁的类文件

Sz CaseController.class

2.使用jd-gui工具,打开文件,根据提示路径找到死锁的代码

at cn.testfan.perf.beihe.pinter.http.CaseController.dead(CaseController.java:81)

四.优化思路

1.避免嵌套枷锁

2.减少加锁的内容

五.线程阻塞和线程死锁的异同对比

1.相同点:都是代码加锁导致

2.不同点

阻塞只有一个锁,发生阻塞后只是性能慢,程序可运行

死锁嵌套枷锁,发生死锁后服务器不相应请求,cpu资源利用率为0

posted @ 2023-07-11 09:23  常疯大虾  阅读(46)  评论(0编辑  收藏  举报