目录:导读
- 前言
- 一、Python编程入门到精通
- 二、接口自动化项目实战
- 三、Web自动化项目实战
- 四、App自动化项目实战
- 五、一线大厂简历
- 六、测试开发DevOps体系
- 七、常用自动化测试工具
- 八、JMeter性能测试
- 九、总结(尾部小惊喜)
前言
死锁问题定位与分析
1、环境搭建
1)准备脚本,执行压测
2)用jstack 打印日志
jstack 112759 >dead.log
3)下载日志到本地
sz dead.log
2、问题定位
1)打开dead.log
搜索deadlock
2)查看死锁的线程
3)查看死锁位置
3、问题分析
1)下载死锁的类文件
Sz CaseController.class
2)使用jd-gui工具,打开文件,根据提示路径找到死锁的代码
at cn.testfan.perf.beihe.pinter.http.CaseController.dead(CaseController.java:81)
4、优化思路
1)避免嵌套枷锁
2)减少加锁的内容
5、线程阻塞和线程死锁的异同对比
1)相同点:
都是代码加锁导致
2)不同点:
阻塞只有一个锁,发生阻塞后只是性能慢,程序可运行;
死锁嵌套枷锁,发生死锁后服务器不相应请求,cpu资源利用率为0;
内存溢出案例
1、JVM内存参数配置
1)给项目的tomcat的catalina.sh添加配置参数
cd /usr/src/tomcat-pinter/bin
vi catalina.sh
在第二行添加以下配置:
JAVA_OPTS="-Xms512m -Xmx512m -Xmn256m -Xss1024k -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m -XX:+UseConcMarkSweepGC -Dcom.sun.management.jmxremote.port=10086 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=10.196.130.103"
2)重启tomcat项目
杀死项目,重启tomcat
./startup.sh & tail -f ../logs/catalina.out
2、查看配置信息
1)查看JVM配置信息
Jmap -heap 72800
2)通过jvisualvm图形化
3、JVM监控
1)jstat命令监控JVM
Jstat –gcutil 72191 10
2)jvisualvm图像监控
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
一、Python编程入门到精通
二、接口自动化项目实战
三、Web自动化项目实战
四、App自动化项目实战
五、一线大厂简历
六、测试开发DevOps体系
七、常用自动化测试工具
八、JMeter性能测试
九、总结(尾部小惊喜)
只要你愿意为梦想付出努力,就没有什么能阻挡你前进的步伐。坚持不懈,勇往直前,你将会创造属于自己的辉煌人生!
任何时候,都不要放弃自己的梦想。只要你坚持不懈地追求,就一定能够取得成功,创造出属于自己的精彩人生!
人生短暂而珍贵,不要让自己留下任何遗憾。抓住机会,勇往直前,追求自己的梦想,创造属于自己的精彩人生!