工作中遇到這么一個

image.png
所以就準備去排查接口的調(diào)用情況。經(jīng)過了解發(fā)現(xiàn)Arthas可以幫助我排查接口緩慢的情況;
Arthas地址:https://github.com/alibaba/arthas/blob/master/README_CN.md#arthas
Arthas 是Alibaba開源的Java診斷工具,深受開發(fā)者喜愛。
當你遇到以下類似問題而束手無策時,Arthas可以幫助你解決:
這個類從哪個 jar 包加載的?為什么會報各種類相關的 Exception?
我改的代碼為什么沒有執(zhí)行到?難道是我沒 commit?分支搞錯了?
遇到問題無法在線上 debug,難道只能通過加日志再重新發(fā)布嗎?
線上遇到某個用戶的數(shù)據(jù)處理有問題,但線上同樣無法 debug,線下無法重現(xiàn)!
是否有一個全局視角來查看系統(tǒng)的運行狀況?
有什么辦法可以監(jiān)控到JVM的實時運行狀態(tài)?
怎么快速定位應用的熱點,生成火焰圖?
Arthas支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同時提供豐富的 Tab 自動補全功能,進一步方便進行問題的定位和診斷。
快速開始
使用arthas-boot(推薦)
下載arthas-boot.jar,然后用java -jar的方式啟動:
curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar
打印幫助信息:
java -jar arthas-boot.jar -h
- 如果下載速度比較慢,可以使用aliyun的鏡像:
java -jar arthas-boot.jar --repo-mirror aliyun --use-http
使用as.sh
Arthas 支持在 Linux/Unix/Mac 等平臺上一鍵安裝,請復制以下內(nèi)容,并粘貼到命令行中,敲 回車 執(zhí)行即可:
curl -L https://arthas.aliyun.com/install.sh | sh
上述命令會下載啟動腳本文件 as.sh 到當前目錄,你可以放在任何地方或?qū)⑵浼尤氲?$PATH 中。
直接在shell下面執(zhí)行./as.sh,就會進入交互界面。
也可以執(zhí)行./as.sh -h來獲取更多參數(shù)信息。
具體使用
安裝之后執(zhí)行
./as.sh
會列出所有檢測到的進程

image.png
選擇你要跟蹤的服務,比如我要跟蹤leimingtech-search-api這個服務。那么輸入9然后回車
然后就是啟動成功

image.png
然后就是使用trace命令
trace命令的使用文檔:https://arthas.aliyun.com/doc/trace

image.png
命令
trace 類全稱 + 空格 + 方法名
在我的項目中就是這樣的:
trace com.leimingtech.front.modules.service.impl.GoodsSearchServiceImpl collectBillsReduceGoods
運行結果:

image.png
可以看到箭頭的地方就是這次接口調(diào)用中耗時比較久的方法。最后在去定位這個方法的調(diào)用情況;