目录:导读
前言
CPU问题定位与分析
1、环境准备
1)准备压测脚本
2)上传到压测服务器
2、现象分析
1)业务指标分析
2)系统资源分析
3、问题定位
1)打开jprofiler查看CPU views—Call Tree/Host Spots,查看占用cpu问题最高的函数
2)下载代码,用反编译工具查看,使用了谷歌的序列化gjson导致cpu使用率高
4、优化问题
1)修改序列化组件为阿里的fastjson
2)优化效果展示
线程阻塞案例分析
1、Jstack打印快照
1)Jmeter运行压测脚本
2)用jstack打印快照,下载到本地
jstack 112759 > log1.txt
jstack 112759 > log2.txt
jstack 112759 > log3.txt
3)在本地搜索是否有blocked关键字
2、分析代码
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)
3、优化代码
调整log4j日志等级
1)找到log4j日志配置文件
路径:/usr/src/tomcat-pinter/webapps/pinter/WEB-INF/classes
2)调整日志等级
vi log4j.properties
提升日志等级为 ERROR
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
一、Python编程入门到精通
二、接口自动化项目实战
三、Web自动化项目实战
四、App自动化项目实战
五、一线大厂简历
六、测试开发DevOps体系
七、常用自动化测试工具
八、JMeter性能测试
九、总结(尾部小惊喜)
即使在最黑暗的夜晚,也别忘记你内心燃烧的火光。只要有坚定的信念和不屈的决心,没有什么能阻挡你的前行之路。加油!
只要心中有梦,万事皆有可能。每一次挑战都是一次成长的机会,相信自己,勇敢追梦,你的未来无可限量。
生命短暂,不要浪费时间去担忧未知的明天,而是要充分利用今天去实现梦想。每一个小步都是成功的积累,坚持下去,你一定能够达到目标。