溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何安裝使用Arthas

發(fā)布時(shí)間:2021-11-16 11:33:43 來(lái)源:億速云 閱讀:155 作者:小新 欄目:云計(jì)算

這篇文章給大家分享的是有關(guān)如何安裝使用Arthas的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

安裝

安裝:

wget https://alibaba.github.io/arthas/arthas-boot.jar
java -jar arthas-boot.jar

linux 下直接執(zhí)行,window 下載文件后執(zhí)行。

如何安裝使用Arthas

執(zhí)行完成后,顯示當(dāng)前 path 中指定的 JDK 中正在運(yùn)行的 java 進(jìn)程輸入相應(yīng)序號(hào),進(jìn)入 sh 命令,表示已連接成功。

初步使用

Arthas 命令初步使用,大概分為 5 類:

基礎(chǔ)命令

  • help——查看命令幫助信息

  • cat——打印文件內(nèi)容,和 linux 里的 cat 命令類似

  • pwd——返回當(dāng)前的工作目錄,和 linux 命令類似

  • cls——清空當(dāng)前屏幕區(qū)域

  • session——查看當(dāng)前會(huì)話的信息

  • reset——重置增強(qiáng)類,將被 Arthas 增強(qiáng)過(guò)的類全部還原,Arthas 服務(wù)端關(guān)閉時(shí)會(huì)重置所有增強(qiáng)過(guò)的類

  • version——輸出當(dāng)前目標(biāo) Java 進(jìn)程所加載的 Arthas 版本號(hào)

  • history——打印命令歷史

  • quit——退出當(dāng)前 Arthas 客戶端,其他 Arthas 客戶端不受影響

  • shutdown——關(guān)閉 Arthas 服務(wù)端,所有 Arthas 客戶端全部退出

  • keymap——Arthas快捷鍵列表及自定義快捷鍵

jvm相關(guān)

  • dashboard——當(dāng)前系統(tǒng)的實(shí)時(shí)數(shù)據(jù)面板

  • thread——查看當(dāng)前 JVM 的線程堆棧信息

  • jvm——查看當(dāng)前 JVM 的信息

  • sysprop——查看和修改 JVM 的系統(tǒng)屬性

  • sysenv——查看 JVM 的環(huán)境變量

  • getstatic——查看類的靜態(tài)屬性

  • New! ognl——執(zhí)行 ognl 表達(dá)式

  • New! mbean——查看 Mbean 的信息

class/classloader相關(guān)

  • sc——查看 JVM 已加載的類信息

  • sm——查看已加載類的方法信息

  • jad——反編譯指定已加載類的源碼

  • mc——內(nèi)存編繹器,內(nèi)存編繹 .java 文件為 .class 文件

  • redefine——加載外部的 .class 文件,redefine 到 JVM 里

  • dump——dump 已加載類的 byte code 到特定目錄

  • classloader——查看 classloader 的繼承樹,urls,類加載信息,使用 classloader 去 getResource

monitor/watch/trace 相關(guān)

請(qǐng)注意,這些命令,都通過(guò)字節(jié)碼增強(qiáng)技術(shù)來(lái)實(shí)現(xiàn)的,會(huì)在指定類的方法中插入一些切面來(lái)實(shí)現(xiàn)數(shù)據(jù)統(tǒng)計(jì)和觀測(cè),因此在線上、預(yù)發(fā)使用時(shí),請(qǐng)盡量明確需要觀測(cè)的類、方法以及條件,診斷結(jié)束要執(zhí)行 shutdown 或?qū)⒃鰪?qiáng)過(guò)的類執(zhí)行 reset 命令。

  • monitor——方法執(zhí)行監(jiān)控

  • watch——方法執(zhí)行數(shù)據(jù)觀測(cè)

  • trace——方法內(nèi)部調(diào)用路徑,并輸出方法路徑上的每個(gè)節(jié)點(diǎn)上耗時(shí)

  • stack——輸出當(dāng)前方法被調(diào)用的調(diào)用路徑

  • tt——方法執(zhí)行數(shù)據(jù)的時(shí)空隧道,記錄下指定方法每次調(diào)用的入?yún)⒑头祷匦畔ⅲ⒛軐?duì)這些不同的時(shí)間下調(diào)用進(jìn)行觀測(cè)

options

  • options——查看或設(shè)置 Arthas 全局開(kāi)關(guān)

使用實(shí)列

  • trace 分析每個(gè)方法的具體執(zhí)行時(shí)間

如何安裝使用Arthas

通過(guò)圖示表明調(diào)用 MongoTemplate.executeFindMultiInternal() 方法時(shí),最耗時(shí)的方法是在 doWith() 方法,總共執(zhí)行 10000 次,耗時(shí) ==252.3064ms==,最少一次調(diào)用耗時(shí) ==0.0132ms==,最大一次耗時(shí) ==38.4329ms==,分析原因還是在于數(shù)據(jù)量太大,MongoTemplate 通過(guò)循環(huán)遍歷出結(jié)果在進(jìn)行序列化。

  • jad 反編譯代碼工具

jad com.sankuai.inf.leaf.common.ZeroIDGen
  • watch 查看輸入?yún)?shù)與輸出參數(shù)

watch com.sankuai.inf.leaf.server.service.SegmentService getId '{params, target, returnObj}' -x 2

params 表示入?yún)ⅲ?strong>target 表示當(dāng)前的類,returnObj 表示返回值。

如何安裝使用Arthas

  • stack 查看被調(diào)用的路徑(向上)

stack com.sankuai.inf.leaf.server.service.SegmentService getId
  • sc 查看 JVM 已加載的類信息

sc -d com.sankuai.inf.leaf.server.service.SegmentService getId

如何安裝使用Arthas

  • thread 分析死鎖

thread b


如何安裝使用Arthas

可以看出當(dāng)前線程正在等待 ReentrantLock$NonfairSync@118f1fb4,而持有這個(gè)對(duì)象的線程又在等待當(dāng)前線程釋放,從而形成死鎖!

  • thread 分析 CPU 占用

總結(jié)

先放一張官方的總結(jié)大圖:

如何安裝使用Arthas

感謝各位的閱讀!關(guān)于“如何安裝使用Arthas”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI