1. 程式人生 > >性能測試三十九:Jprofiler分析CPU過高和響應時間長的問題

性能測試三十九:Jprofiler分析CPU過高和響應時間長的問題

calc 應該 dsta perf jmeter monit inf 其他 功能

使用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過高和響應時間長的問題