性能测试三十九: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毫秒,但是調用次數確是其他方法的幾倍,造成耗時多
轉載于:https://www.cnblogs.com/malinalian/p/10583289.html
總結
以上是生活随笔為你收集整理的性能测试三十九:Jprofiler分析CPU过高和响应时间长的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 53-java中的queue
- 下一篇: 算法问题拓展——kadane算法及其二维