性能测试三十九:Jprofiler分析CPU过高和响应时间长的问题

Posted zhongyehai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了性能测试三十九:Jprofiler分析CPU过高和响应时间长的问题相关的知识,希望对你有一定的参考价值。

 

使用Jprofiler监控分析案例

 

一、cpu负载过高:http://localhost:8080/PerfTeach/CpuTopServlet?id=1

cpu消耗高的可能原因
1、使用了复杂的算法,比如加密、解密
2、压缩、解压、序列化等操作
3、代码bug,比如死循环

dstat监控起来,先看一下资源是否正常,用5个并发跑60秒

技术分享图片

 

CPU:100%

技术分享图片

 

TPS才几百,肯定就有问题

技术分享图片

 

TOP:JAVA占的CPU最多

技术分享图片

查看进程,是tomcat

技术分享图片

 

使用jprofiler查看,很明显有个自己写的userToString方法占了19%

技术分享图片

 

打开代码看那个方法:里面有使用Gson对json的转换

技术分享图片

 

json转换组件:Gson、jackson、fastjson,三个组件各有优势,但是从从性能方面来说,Gson性能最差

所以直这个情况只能换组件,fastjson性能最好,建议使用fastjson

 

 

二、响应时间长:http://1localhost:8080/PerfTeach/TimeMonitor?id=1

使用jprofiler的方法耗时统计功能,可以统计出每个方法的耗时

 50个并发,跑600秒

 

CPU不高

技术分享图片

 

响应时间300多毫秒,有些慢了,需要优化,一般小于100毫秒,性能算是不错的了,100--500之间,算一般的,500以上,就是很差的

技术分享图片

由于没有经过nginx,所以直接查看tomcat日志里面的响应时间,和jmeter统计出来的差不多,网络没什么问题

技术分享图片

技术分享图片

技术分享图片

 

重新压一下并且打开jprofiler,看看详细分析,doCalculator方法平均耗了200毫秒,应该优化这个方法

技术分享图片

 

 还有一种情况也是需要优化,如doCalculator方法平均用20毫秒,但是调用次数确是其他方法的几倍,造成耗时多

 




以上是关于性能测试三十九:Jprofiler分析CPU过高和响应时间长的问题的主要内容,如果未能解决你的问题,请参考以下文章

性能测试三十:监控之CPU内存磁盘,命令监控

磁盘IO高和线程切换过高性能压测案例分析

性能测试--总结--性能定位

linux 性能优化-- cpu 切换以及cpu过高

性能分析工具jprofiler的详细使用说明(程序员必学)

JProfiler性能分析工具详解