门户网站制作,网站做的不好会有什么后果,苏州策划网站模板建站公司,门户网站是用户上网的第一入口目录#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结#xff08;尾部小惊喜#xff09; 前言
1、内存溢出
1导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结尾部小惊喜 前言
1、内存溢出
1堆内存溢出
现象 压测执行一段时间后系统处理能力下降。这时用JConsole、JVisualVM等工具连上服务器查看GC情况每次GC回收都不彻底并且可用堆内存越来越少。
压测持续下去最终在日志中有报错信息java.lang.OutOfMemoryError.Java heap space
排查手段 使用jmap -histo pid test.txt命令将堆内存使用情况保存到test.txt文件中打开文件查看排在前50的类中有没有熟悉的或者是公司标注的类名如果有则高度怀疑内存泄漏是这个类导致的。
如果没有则使用命令jmap -dump:live,formatb,filetest.dump pid生成test.dump文件然后使用MAT进行分析。
如果怀疑是内存泄漏也可以使用JProfiler连上服务器在开始跑压测运行一段时间后点击“Mark Current Values”后续的运行就会显示增量这时执行一下GC观察哪个类没有彻底回收基本就可以判断是这个类导致的内存泄漏。
解决方式优化代码对象使用完毕需要置成null。
2永久代 / 方法区溢出
现象压测执行一段时间后日志中有报错信息java.lang.OutOfMemoryError: PermGen space
产生原因由于类、方法描述、字段描述、常量池、访问修饰符等一些静态变量太多将持久代占满导致持久代溢出。
解决方法修改JVM参数将XX:MaxPermSize参数调大。尽量减少静态变量。
3栈内存溢出
现象压测执行一段时间后日志中有报错信息java.lang.StackOverflowError
产生原因线程请求的栈深度大于虚拟机所允许的最大深度递归没返回戒者循环调用造成。
解决方法修改JVM参数将Xss参数改大增加栈内存。栈内存溢出一定是做批量操作引起的减少批处理数据量。
4系统内存溢出
现象压测执行一段时间后日志中有报错信息java.lang.OutOfMemoryError: unable to create new native thread
产生原因操作系统没有足够的资源来产生返个线程造成的。系统创建线程时除了要在Java堆中分配内存外操作系统本身也需要分配资源来创建线程。因此当线程数量大到一定程度以后堆中或许还有空间但是操作系统分配不出资源来了就出现这个异常了。
解决方法 减少堆内存 减少线程数量 如果线程数量不能减少则减少每个线程的堆栈大小通过-Xss减小单个线程大小以便能生产更多的线程
2、CPU过高
1us cpu高
现象压测过程中使用top命令查看系统资源占用情况us cpu过高超过50%以上。
排查手段 使用top命令是哪个进程消耗CPU高 再找到CPU消耗高的线程top -H -p 进程号 把线程号转换成16进制printf %x\n 线程号 再用jstack命令分析这个线程是在干什么jstack 进程号 | grep 16进制的线程号 通过JProfiler的CPU Views视图的层层分析可以清楚的找到造成CPU高的原因
2sy cpu高
现象压测过程中使用top命令查看系统资源占用情况sy cpu过高超过50%以上。
排查手段 首先查看磁盘繁忙程度、磁盘的队列iostat、nmon 如果磁盘没有问题则使用strace查看系统内核调用情况
3、TPS上不去
1网络带宽
在压力测试中有时候要模拟大量的用户请求如果单位时间内传递的数据包过大超过了带宽的传输能力那么就会造成网络资源竞争间接导致服务端接收到的请求数达不到服务端的处理能力上限。
2连接池
最大连接数太少造成请求等待。连接池一般分为服务器中间件连接池比如Tomcat和数据库连接池或者理解为最大允许连接数也行。
3垃圾回收机制
从常见的应用服务器来说比如Tomcat如果堆内存设置比较小就会造成新生代的Eden区频繁的进行Young GC老年代的Full GC也回收较频繁那么对TPS也是有一定影响的因为垃圾回收时通常会暂停所有线程的工作。
4数据库
高并发情况下如果请求数据需要写入数据库且需要写入多个表的时候如果数据库的最大连接数不够或者写入数据的SQL没有索引没有绑定变量抑或没有主从分离、读写分离等就会导致数据库事务处理过慢影响到TPS。
5硬件资源
包括CPU配置、使用率等、内存占用率等、磁盘I/O、页交换等。
6压力机
比如Jmeter和Loadrunner单机负载能力有限如果需要模拟的用户请求数超过其负载极限也会间接影响TPS这个时候就需要进行分布式压测来解决其单机负载的问题。
7业务逻辑
业务解耦度较低较为复杂整个事务处理线被拉长也会导致TPS上不去。
8系统架构
比如是否有缓存服务缓存服务器配置缓存命中率、缓存穿透以及缓存过期等都会影响到测试结果。
4、性能问题分析流程
查看服务器的CPU、内存 、负载等情况包括应用服务器和数据库服务器 查看数据库健康状态数据库死锁、连接池不释放 查看项目日志查看无报错现象 查看jvm的gc等情况
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图
一、Python编程入门到精通 二、接口自动化项目实战 三、Web自动化项目实战 四、App自动化项目实战 五、一线大厂简历 六、测试开发DevOps体系 七、常用自动化测试工具 八、JMeter性能测试 九、总结尾部小惊喜
不要惧怕失败因为它是成功的必经之路不要畏惧困难因为它是成长的催化剂。勇往直前坚持奋斗你将发现内心的力量创造出耀眼的辉煌。
在每一个黎明的曙光中鼓起勇气迈出坚定的步伐。无论前路多艰辛奋斗不息是实现梦想的唯一途径。相信自己闪耀出属于你的辉煌人生。
奋斗是生命的旋律每一次努力都是自我超越的乐章。不论遇到多少困难与挑战坚持奋斗绽放属于你的璀璨光芒创造出不可思议的奇迹。