首页 > 其他分享 >性能测试线程死锁问题分析和定位【杭州多测师】【杭州多测师_王sir】

性能测试线程死锁问题分析和定位【杭州多测师】【杭州多测师_王sir】

时间:2022-10-04 13:33:05浏览次数:54  
标签:杭州 多测师 死锁 线程 锁定 资源

1、死锁的概念:有2个线程、一个线程锁住了资源A、又想去锁定资源B、另外一个线程锁定了资源B、又想去锁定资源A、2个线程都想

去得到对方的资源、而又不愿释放自己的的资源、从而造成了一种互相等待3、无法执行的情况

2、这个时候可以用jvisualvm活jstack命令对线程进行dump

3、jstack 进程号 > a.log 然后在本地打开a.log 在日志的最底部发现有2个http开头的线程

4、找到 Found one Java-level deadlock:  就是找到了一个Java级别的死锁、可以看到一个线程想要锁定某个对象但是被另外一个线程锁定了

而另外一个线程想要锁定的对象被第一个线程锁定了、并且都相互没有释放

5、线程死锁之后现象:TPS几乎为0、压力测试工具无法得到服务器的响应、服务器硬件的资源CPU和内存 IO等等都是非常空闲的、通过

jvisualvm查看线程发现至少有2个线程一直处于红色的阻塞状态、死锁一般都是表现为程序停顿。

6、解决的办法:

1)避免嵌套的加锁

2)减少锁粒度

标签:杭州,多测师,死锁,线程,锁定,资源
From: https://www.cnblogs.com/xiaoshubass/p/16753642.html

相关文章