前言
當遇到 JAVA 線上問題時,如 CPU 飆升、負載突高、內存溢出等問題,你需要查命令,查網絡,然后 jps、jstack、jmap、jhat、jstat、hprof 等一通操作。而除了這些,Arthas 是一款命令行交互模式的 Java 診斷工具,由于是 Java 編寫,所以可以直接下載相應 的 jar 包運行,它是Java 線上問題定位處理的終極利器。
當你遇到以下類似問題而束手無策時,Arthas可以幫助你解決:
- 這個類從哪個 jar 包加載的?為什么會報各種類相關的 Exception?
- 我改的代碼為什么沒有執行到?難道是我沒 commit?分支搞錯了?
- 遇到問題無法在線上 debug,難道只能通過加日志再重新發布嗎?
- 線上遇到某個用戶的數據處理有問題,但線上同樣無法 debug,線下無法重現!
- 是否有一個全局視角來查看系統的運行狀況?
- 有什么辦法可以監控到JVM的實時運行狀態?
- 怎么快速定位應用的熱點,生成火焰圖?
- 怎樣直接從JVM內查找某個類的實例?
安裝方式
官方安裝方式參考:Arthas下載:
https://arthas.aliyun.com/doc/download.html#id2
上傳至服務器,解壓到某個文件文件夾(我這里文件夾叫arthas)
切換到解壓文件夾,啟動Arthas
使用命令:java -jar arthas-boot.jar啟動,啟動過程中會讓你選擇監控哪個項目,輸入序號即可
啟動成功后,可使用官方提供的命令查看內存、線程相關信息
官方命令文檔:
https://arthas.aliyun.com/doc/commands.html
常用命令
dashboard命令 可以看到,這里會顯示出線程(按照cpu占用百分比倒排)、內存(堆空間實時情況)、GC情況等數據。可以按Ctrl+C或者q退出
thread命令查看所有線程信息,同時會列出每個線程的 CPU 使用率,可以看到圖里 ID 為12 的線程 CPU 使用率
thread 33命令 查看 CPU 消耗較高的 12 號線程信息,可以看到 CPU 使用較高的方法和行數
thread -n 10命令查看CPU占用率前10的線程的堆棧信息
thread -b命令查看目前block線程
thread -n 5 -i 5000命令查看5s內的CPU使用率top 5線程棧
trace 包名+類名 方法名命令查看方法調用耗時
stop命令關閉Arthas服務端
quit命令退出Arthas客戶端
常保存日志
將命令的結果完整保存在日志文件中,便于后續進行分析,默認情況下,該功能是關閉的,如果需要開啟,請執行以下命令:






