线程阻塞案例分析
线程阻塞案例分析
一.Jstack打印快照
1.jmeter运行压测脚本

2.用jstack打印快照,下载到本地
jstack 112759 > log1.txt
jstack 112759 > log2.txt
jstack 112759 > log3.txt


3.在本地搜索是否有blocked关键字

二.分析代码
1.下载源码文件
cn.testfan.perf.beihe.pinter.http.CaseController.block(CaseController.java:60)
根据提示,找到casecontrokker的路径
/usr/src/tomcat-pinter/webapps/pinter/WEB-INF/classes/cn/testfan/perf/beihe/pinter/http

2.分析代码出错地方
打开jd-gui查看源码60行
发现没有加锁的表示:synchronized,但是此行调用了loger方法

3.去下载log4j的文件
路径:/usr/src/tomcat-pinter/webapps/pinter/WEB-INF/lib

下载这个文件到本地
根据提示路径:
at org.apache.log4j.Category.callAppenders(Category.java:204)

三.优化代码
调整log4j日志等级
1.找到log4j日志配置文件
路径:/usr/src/tomcat-pinter/webapps/pinter/WEB-INF/classes

2.调整日志等级
vi log4j.properties
提升日志等级为 ERROR

浙公网安备 33010602011771号