性能测试学习第十天-----性能案例分析之CPU消耗过高&响应时间较长
一、现象 /pinter/case/cpu?type=1 使用google的gjson.tojson性能较差 type=2 使用性能好的阿里巴巴的fastjson库
压测过程中,发现应用服务器的CPU使用率比较高(>80%):
两种情况:
1、接口的性能非常好,比如响应时间<10ms,tps很高,此时CPU使用率高是正常的,不需要优化
2、接口性能不好,比如响应时间>200ms,tps很低,此时需要考虑优化
二、CPU消耗高可能的原因
1、使用了复杂的算法,比如加密、解密
2、压缩、解压、序列化等操作
3、代码bug,比如死循环
三、定位方法
在windows上(本机)和服务器上(Linux),分别安装对应版本的jprofiler
Windows:双击-下一步(略)
Linux:
1、上传安装包,执行命令rpm -ivh jprofiler_linux_9_1_1.rpm
2、tomcat/bin/catalina.sh文件配置jvm参数的地方添加 -agentpath:/opt/jprofiler11/bin/linux-x86/libjprofilerti.so=port=8849,nowait 64位系统需将linux-x86换成x64
jprofiler使用需关闭防火墙,因此,只适合在测试环境使用。
使用jprofiler定位响应时间长的问题 /pinter/case/time?id=1
定位方法:使用jprofiler的方法耗时统计功能,可以统计出每个方法的耗时
1、点击“CPU views”- “Method Statistics”
2、点击监控按钮,开始监控进程的方法耗时
3、等待30s(自己掌握,时间太短分析样本太少),点击停止监控按钮
4、查看表格中的各方法耗时和调用次数