• 性能测试三十九: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毫秒,但是调用次数确是其他方法的几倍,造成耗时多

  • 相关阅读:
    系统分析与设计——WordCount
    ruby学习笔记
    RubyMine 2016.1 下载 附注册激活码 破解版方法
    Java环境一键配置,需要手动输入jdk路劲。
    iOS学习资源收集
    TPC-H数据导入Hive方案
    Navicat连接不上远程主机数据库的问题解决方案
    TPC-H数据导入Mysql数据方案
    2018/09/26 LINUX安装及linux命令之ls命令学习
    使用Xcode编写并运行Python
  • 原文地址:https://www.cnblogs.com/zhongyehai/p/10325363.html
Copyright © 2020-2023  润新知