close

大家好,我是TJ

關注TJ君,回復「武功秘籍」免費獲取計算機寶典書籍


TJ君將之前發過的各種項目及工具進行了整理,收錄到了GitHub項目,歡迎各位小夥伴光臨Star,地址如下:https://github.com/Wechat-TJ/TJ-WORLD-FORU

小夥伴們平時編程的時候遇到的最大的難題是什麼?TJ君覺得應該是處理各種各樣沒見過的異常報錯吧,有些問題還可以百度一下求教,有些問題就只能是丈二和尚摸不着頭腦,看個半天了。

TJ君前兩天機緣巧合之下看到一個Java診斷利器,Arthas

覺得還不錯,趕緊來和大家分享一下。

Arthas是Alibaba開源的一款Java診斷工具,對於一些初學者來說用途還是大大的,例如它可以解決以下這些問題:

這個類從哪個 jar 包加載的?為什麼會報各種類相關的 Exception?
我改的代碼為什麼沒有執行到?難道是我沒 commit?分支搞錯了?
遇到問題無法在線上 debug,難道只能通過加日誌再重新發布嗎?
線上遇到某個用戶的數據處理有問題,但線上同樣無法 debug,線下無法重現!
是否有一個全局視角來查看系統的運行狀況?
有什麼辦法可以監控到JVM的實時運行狀態?
怎麼快速定位應用的熱點,生成火焰圖?
怎樣直接從JVM內查找某個類的實例?

Arthas的使用也是非常簡單,有兩種方式:

1、使用arthas-boot(推薦)

下載arthas-boot.jar,然後用java -jar的方式啟動:

curl-Ohttps://arthas.aliyun.com/arthas-boot.jarjava-jararthas-boot.jar

打印幫助信息:

java-jararthas-boot.jar-h

如果下載速度比較慢,可以使用aliyun的鏡像:java -jar arthas-boot.jar --repo-mirror aliyun --use-http

2、使用as.sh

Arthas 支持在 Linux/Unix/Mac 等平台上一鍵安裝,請複製以下內容,並粘貼到命令行中,敲 回車 執行即可:

curl-Lhttps://arthas.aliyun.com/install.sh|sh

上述命令會下載啟動腳本文件 as.sh 到當前目錄,你可以放在任何地方或將其加入到 $PATH 中。

直接在shell下面執行./as.sh,就會進入交互界面。

也可以執行./as.sh -h來獲取更多參數信息。

同時,還有很多在線文檔對於Arthas給出支持

舉例,如果你想知道當前最忙的前N個線程,可以簡單的通過命令thread -n 3查看並打出堆棧:

$thread-n3"C1CompilerThread0"[Internal]cpuUsage=1.63%deltaTime=3mstime=1170ms"arthas-command-execute"Id=23cpuUsage=0.11%deltaTime=0mstime=401msRUNNABLEatjava.management@11.0.7/sun.management.ThreadImpl.dumpThreads0(NativeMethod)atjava.management@11.0.7/sun.management.ThreadImpl.getThreadInfo(ThreadImpl.java:466)atcom.taobao.arthas.core.command.monitor200.ThreadCommand.processTopBusyThreads(ThreadCommand.java:199)atcom.taobao.arthas.core.command.monitor200.ThreadCommand.process(ThreadCommand.java:122)atcom.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl.process(AnnotatedCommandImpl.java:82)atcom.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl.access$100(AnnotatedCommandImpl.java:18)atcom.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl$ProcessHandler.handle(AnnotatedCommandImpl.java:111)atcom.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl$ProcessHandler.handle(AnnotatedCommandImpl.java:108)atcom.taobao.arthas.core.shell.system.impl.ProcessImpl$CommandProcessTask.run(ProcessImpl.java:385)atjava.base@11.0.7/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)atjava.base@11.0.7/java.util.concurrent.FutureTask.run(FutureTask.java:264)atjava.base@11.0.7/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)atjava.base@11.0.7/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)atjava.base@11.0.7/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)atjava.base@11.0.7/java.lang.Thread.run(Thread.java:834)"VMPeriodicTaskThread"[Internal]cpuUsage=0.07%deltaTime=0mstime=584ms

更多實用的技巧還是等小夥伴自己來體驗吧!工具地址如下:

點擊下方卡片,關注公眾號「TJ君」

回復「Arthas2022」,獲取倉庫地址

關注我,每天了解一個牛x、好用、有趣的東東

往期推薦

對方已撤回一條消息?到底是什麼?試試這個無需安裝直接使用的小工具吧

一個基於 React native 開發的安卓音樂軟件

FASTJSON2,為下一個十年提供的高性能JSON庫

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()