您的位置:首页 > 运维架构

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

2017-06-26 15:55 465 查看
开发工具: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无法获取到执行权限,无法执行线
   程中的代码。 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: