您好,登錄后才能下訂單哦!
本篇內容主要講解“如何使用Arthas的trace命令排查線上服務平均響應時間太長問題”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何使用Arthas的trace命令排查線上服務平均響應時間太長問題”吧!
最近線上環境某個接口服務響應時間偏長,導致用戶體驗超差,那平時該怎么快速的排查這類問題呢?
本文接下來將從兩方面展開:
下面我們先模擬線上環境:利用 SpringBoot 項目搭建,并且編寫好服務接口;
注意:服務接口代碼為了簡便,只寫了 一些大循環的代碼 來模擬較長的耗時;除此之外,實際上還包含很多多其它常見的情況,例如:
服務接口代碼如下:
test1、test2方法如下:
第二步 JMeter 模擬用戶調用的測試腳本配置:
第三步服務接口 SpringBoot 代碼 和 JMeter 測試腳本的所在項目位置:
服務接口代碼準備好后,使用IDEA開發工具等方式將其導出為 Jar 包 。
為了模擬最為真實的線上環境,需將準備好的 服務接口 Jar 包放到 服務器中,然后使用命令 java -jar *.jar 運行起 Jar 包;然后使用 JMeter 進行接口的調用,在 聚合報告 中發現平均響應時間偏長;如圖:
如果有用戶反映某功能響應時間太長了,別著急,根據下面的方法進行排查,絕對方便又快速的找到問題原因。
Arthas 問題排查:
此時診斷工具還沒有運行完,需要手動選擇要診斷/監控的java 進程,并且此工具也會列出全部的java進程號,你只需要輸入 它們最前的序號 [1] 即可;如圖:
運行完后,可以使用 trace命令 監控服務接口方法中調用的其它方法的耗時;
trace 命令能主動搜索 class-pattern/method-pattern 對應的方法調用路徑,渲染和統計整個調用鏈路上的所有性能開銷和追蹤調用鏈路。
具體命令格式:trace [全限定類名][類中的方法名]
例如:監控本服務接口;com.lyl.controller.TestController : 全限定類名,process:TestController 類中的方法;
具體命令舉例如下所示:
trace com.lyl.controller.TestController process
trace 命令執行結果展示,如圖:
?通過trace 命令監控統計的調用鏈路各個方法的執行耗時,可以發現調用的 com.lyl.util.StringUtil 類中的 test2() 方法執行耗時比較大;所以需要特別去查看這個方法的代碼是否存在問題;如果這個代碼中還存在許多的方法調用鏈路,則需要再次使用 trace 命令進行監控調用鏈路的耗時,找出具體可能存在問題的方法。
?
Arthas 阿里開源的診斷工具還提供了很多的命令供使用,大家可以去查看學習。B站搜“業余草”也可以查看到我之前錄制的視頻教程。
另外這里有兩個需要注意的地方:
到此,相信大家對“如何使用Arthas的trace命令排查線上服務平均響應時間太長問題”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。