线程阻塞案例分析

线程阻塞案例分析

一.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

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