您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(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í)行。
執(zhí)行完成后,顯示當(dāng)前 path 中指定的 JDK 中正在運(yùn)行的 java 進(jìn)程輸入相應(yīng)序號(hào),進(jìn)入 sh 命令,表示已連接成功。
Arthas 命令初步使用,大概分為 5 類:
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快捷鍵列表及自定義快捷鍵
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 的信息
sc——查看 JVM 已加載的類信息
sm——查看已加載類的方法信息
jad——反編譯指定已加載類的源碼
mc——內(nèi)存編繹器,內(nèi)存編繹 .java 文件為 .class 文件
redefine——加載外部的 .class 文件,redefine 到 JVM 里
dump——dump 已加載類的 byte code 到特定目錄
classloader——查看 classloader 的繼承樹,urls,類加載信息,使用 classloader 去 getResource
請(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——查看或設(shè)置 Arthas 全局開(kāi)關(guān)
trace 分析每個(gè)方法的具體執(zhí)行時(shí)間
通過(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 表示返回值。
stack 查看被調(diào)用的路徑(向上)
stack com.sankuai.inf.leaf.server.service.SegmentService getId
sc 查看 JVM 已加載的類信息
sc -d com.sankuai.inf.leaf.server.service.SegmentService getId
thread 分析死鎖
thread b
可以看出當(dāng)前線程正在等待 ReentrantLock$NonfairSync@118f1fb4,而持有這個(gè)對(duì)象的線程又在等待當(dāng)前線程釋放,從而形成死鎖!
thread 分析 CPU 占用
先放一張官方的總結(jié)大圖:
感謝各位的閱讀!關(guān)于“如何安裝使用Arthas”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
免責(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)容。