日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

【arthas】使用arthas定位接口耗時問題、無日志情況下排查問題

作者:FindingKeys_wht 更新時間: 2022-07-13 編程語言

接口返回時間過長,一般會看日志來定位耗時步驟,如果沒有打日志,或者關鍵步驟日志打印的不如預期,則不好定位了。
此時可以借助arthas進行定位,其原理就是附加到指定的java進程,對關注的方法進行監聽,對實時請求進行分析。

1.使用命令 ps -ef|grep 進程名 查看進程id和用戶
在這里插入圖片描述

2.啟動arthas并附加到進程
啟動arthas命令: /opt/****/jdk1.8.0_262/bin/java -jar /opt/arthas/arthas-boot.jar
arthas會將可以附加的進程都列出來,這里我們可以看到進程id 277648是第9個
在這里插入圖片描述
輸入9后回車,看到下圖的輸入光標就是附加成功了,arthas此時在等待用戶輸入監聽命令,此例我們介紹trace和watch兩個命令,如果附加不成功,優先考慮是否是因為用戶不對或其他權限問題
在這里插入圖片描述

Arthas命令trace使用

trace命令可以查看某個方法調用其他方法時的耗時。語法:trace 全類名 方法名(可以附帶一些參數,具體可以查閱官方文檔)
在這里插入圖片描述然后就打樁成功,開始監聽此方法的調用了,去操作頁面進行相關操作,可以看到操作一次,就會打印一次調用棧:
在這里插入圖片描述
注意:trace命令只會追蹤一層,所以看到耗時較多的方法后,如果還不足以分析出原因,需要調整trace語句為下一層的方法,進一步trace,直到最后分析出根因

Arthas命令watch使用

watch命令可以查看某個方法的入參和返回值。(定位問題卻苦于沒有打印日志的場景下可以用此方法)
語法:watch 全類名 方法名 參數(具體可以查閱官方文檔)
在這里插入圖片描述
圖例中帶了2個參數。解釋如下;
1.{params,returnObj} 表示同時打印入參和返回,如果只需要打印返回,那么用returnObj就可以了
2.-x 5 此例中返回的參數是個列表,且對象比較復雜,屬性和層次比較多,需要指定打印的深度,這里指定5就是從數組往對象結構里打印5層的意思,設置太小了就看不到對象細節了。

原文鏈接:https://blog.csdn.net/wht_0217/article/details/125526883

欄目分類
最近更新