①稳定性压测一段时间后,Jmeter报错,日志报:
java.lang.OutOfMemoryError.Java heap space
②用jmap -histo pid命令dump堆内存使用情况,查看堆内存排名前20个对象。
看是否有自己应用程序的方法,从最高的查起,如果有则检查该方法是什么原因造成堆内存溢出。
③如果前20里没有自己的方法,则用jmap -dump来dump堆内存,再用MAT分析dump下来的堆内存,分析导出内存溢出的方法。
④如果应用程序的方法没有问题,则需要修改JVM参数,修改xms,xmx,调整堆内存参数,一般是增加堆内存。
2、栈内存溢出
①稳定性压测一段时间后,Jmeter报错,日志报:
Java.Lang.StackOverflowError
②修改jvm参数,将xss参数改大,增加栈内存。
③栈溢出一定是做批量操作引起的,减少批处理数据量。
3、持久代溢出
①稳定性压测一定时间后,日志报:
Java.Lang.OutOfMemoryError.PermGen Space
②这种原因是由于类、方法描述、字段描述、常量池、访问修饰符等一些静态变量太多,将持久代占满导致持久代溢出。
③修改jvm配置,将XX:MaxPermSize=256参数调大。尽量减少静态变量。
4、线程死锁
①容量测试压测一段时间后,报连接超时。
②造成这种现象的原因很多,比如带宽不够,中间件线程池不够用,数据库连接池不够,连接数占满等都会造成连接不上而报超时错误。
③jstack命令dump线程栈,搜索线程栈里有没有block,如果有的话就是线程死锁,找到死锁的线程,分析对应的代码。
5、数据库死锁
①容量测试压测一段时间后,报连接超时。
②造成这种现象的原因很多,比如带宽不够,中间件线程池不够用,数据库连接池不够,连接数占满等都会造成连接不上而报超时错误。
③数据库日志中搜索block,能搜到block的话就是存在数据库死锁,找到日志,查看对应的sql,优化造成死锁的sql。
行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 786229024,里面有各种测试开发资料和技术可以一起交流哦。
最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。