《愁愁愁》:国产青春剧的“泥石流”还是“一股清流”?

核心内容摘要

《召唤魅魔竟是妈妈》第一季:高清流畅,免费下载,开启你的奇幻冒险!
4480首播禁播影:揭秘那些触及灵魂的隐秘视界

探秘“澳门水蜜桃”:镜头下的风情万种,是谁点亮了这迷人一瞬?

点击文末小卡片免费获取软件测试全套资料资料在手涨薪更快

性能问题分析流程

查看服务器的CPU、内存 、负载等情况包括应用服务器和数据库服务器

查看数据库健康状态数据库死锁、连接池不释放

查看项目日志查看无报错现象

查看jvm的gc等情况

内存溢出

堆内存溢出现象1压测执行一段时间后系统处理能力下降。

这时用JConsole、JVisualVM等工具连上服务器查看GC情况每次GC回收都不彻底并且可用堆内存越来越少。

2压测持续下去最终在日志中有报错信息java.lang.OutOfMemoryError.Java heap space。

排查手段1使用jmap -histo pid test.txt命令将堆内存使用情况保存到test.txt文件中打开文件查看排在前50的类中有没有熟悉的或者是公司标注的类名如果有则高度怀疑内存泄漏是这个类导致的。

2如果没有则使用命令jmap -dump:live,formatb,filetest.dump pid生成test.dump文件然后使用MAT进行分析。

3如果怀疑是内存泄漏也可以使用JProfiler连上服务器在开始跑压测运行一段时间后点击“Mark Current Values”后续的运行就会显示增量这时执行一下GC观察哪个类没有彻底回收基本就可以判断是这个类导致的内存泄漏。

解决方式优化代码对象使用完毕需要置成null。

永久代/方法区溢出现象压测执行一段时间后日志中有报错信息java.lang.OutOfMemoryError: PermGen space。

产生原因由于类、方法描述、字段描述、常量池、访问修饰符等一些静态变量太多将持久代占满导致持久代溢出。

解决方法修改JVM参数将XX:MaxPermSize参数调大。

尽量减少静态变量。

栈内存溢出现象压测执行一段时间后日志中有报错信息java.lang.StackOverflowError。

产生原因线程请求的栈深度大于虚拟机所允许的最大深度递归没返回戒者循环调用造成。

解决方法修改JVM参数将Xss参数改大增加栈内存。

栈内存溢出一定是做批量操作引起的减少批处理数据量。

系统内存溢出现象压测执行一段时间后日志中有报错信息java.lang.OutOfMemoryError: unable to create new native thread。

产生原因操作系统没有足够的资源来产生返个线程造成的。

系统创建线程时除了要在Java堆中分配内存外操作系统本身也需要分配资源来创建线程。

因此当线程数量达到一定程度以后堆中或许还有空间但是操作系统分配不出资源来了就出现这个异常了。

解决方法1减少堆内存2减少线程数量3如果线程数量不能减少则减少每个线程的堆栈大小通过-Xss减小单个线程大小以便能生产更多的线程。

CPU过高

us cpu过高现象压测过程中使用top命令查看系统资源占用情况us cpu过高超过50%以上。

排查手段1使用top命令是哪个进程消耗CPU高2再找到CPU消耗高的线程top -H -p 进程号3把线程号转换成16进制printf %x\n 线程号4再用jstack命令分析这个线程是在干什么jstack 进程号 | grep 16进制的线程号5通过JProfiler的CPU Views视图的层层分析可以清楚的找到造成CPU高的原因

Sy cpu过高现象压测过程中使用top命令查看系统资源占用情况sy cpu过高超过50%以上。

排查手段1首先查看磁盘繁忙程度、磁盘的队列iostat、nmon2如果磁盘没有问题则使用strace查看系统内核调用情况

TPS上不去一网络带宽在压力测试中有时候要模拟大量的用户请求如果单位时间内传递的数据包过大超过了带宽的传输能力那么就会造成网络资源竞争间接导致服务端接收到的请求数达不到服务端的处理能力上限。

二连接池最大连接数太少造成请求等待。

连接池一般分为服务器中间件连接池比如Tomcat和数据库连接池或者理解为最大允许连接数也行。

三垃圾回收机制从常见的应用服务器来说比如Tomcat如果堆内存设置比较小就会造成新生代的Eden区频繁的进行Young GC老年代的Full GC也回收较频繁那么对TPS也是有一定影响的因为垃圾回收时通常会暂停所有线程的工作。

四数据库高并发情况下如果请求数据需要写入数据库且需要写入多个表的时候如果数据库的最大连接数不够或者写入数据的SQL没有索引没有绑定变量抑或没有主从分离、读写分离等就会导致数据库事务处理过慢影响到TPS。

五硬件资源包括CPU配置、使用率等、内存占用率等、磁盘I/O、页交换等。

六压力机比如Jmeter和Loadrunner单机负载能力有限如果需要模拟的用户请求数超过其负载极限也会间接影响TPS这个时候就需要进行分布式压测来解决其单机负载的问题。

七业务逻辑业务解耦度较低较为复杂整个事务处理线被拉长也会导致TPS上不去。

八系统架构比如是否有缓存服务缓存服务器配置缓存命中率、缓存穿透以及缓存过期等都会影响到测试结果。

最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走这些资料对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你凡事要趁早特别是技术行业一定要提升技术功底。

9·1免费下载安装-9·1免费下载安装应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123