喜欢研究学习技术,喜欢和志同道合的人交流。 从事测试6年,专职性能3年经验,擅长性能测试,测试框架开发。 励志格言:只要想学习,永远都不会太晚;只要想进步,永远都会有空间。

使用Jvisualvm监控线程死锁案例分析

上一篇 / 下一篇  2018-06-20 10:32:43 / 个人分类:性能测试

开发工具:Eclipse 
监控工具:jvisualvm
应用服务器:tomcat 7.8
 
    在做性能测试过程中,一般都会对应用程序进行一些监控,看应用程序在高并发的过程中是否正常运行。今天这里简单介绍一个多线程死锁的监控整个过程案例。 

1、首先看下两段多线程的代码。(特地编写的异常代码,存在线程死锁)。

图片
图片
2、将以上两段代码打成JSP页面。
图片

3、使用tomcat对刚才打的jsp页面进行发布,然后使用LoadRunner进行并发访问。
图片

4、运行tomcat发布刚才的项目,并且使用LoadRunner的control进行并发压测。同时打开jvisualvm.exe对tomcat进行线程监控。
图片

5、监控过程中出现了线程死锁的报错,进行了【线程dump】操作,查看报错异常,可以清晰看到具体代码的报错位置。
图片

6、报错代码在com.thread2包下的DeadLockThread2类的第10行代码。将此报错反馈给开发人员over。
   异常代码分析:两个线程的方法,分别持有了对方的锁,并且嵌套持有,导致双发无法释放锁,CPU无法获取到执行权限,无法执行线    程中的代码。 

TAG:

 

评分:0

我来说两句

Open Toolbar