使用arthas工具
arthas是Alibaba開源的Java診斷工具。arthas可以幫助我們解決一下問題:
- 這個類從哪個 jar 包加載的?為什么會報各種類相關的 Exception?
- 我改的代碼為什么沒有執行到?難道是我沒 commit?分支搞錯了?
- 遇到問題無法在線上 debug,難道只能通過加日志再重新發布嗎?
- 線上遇到某個用戶的數據處理有問題,但線上同樣無法 debug,線下無法重現!
- 是否有一個全局視角來查看系統的運行狀況?
- 有什么辦法可以監控到JVM的實時運行狀態?
- 怎么快速定位應用的熱點,生成火焰圖?
如果需要查看更多內容,請訪問arthas官網。
監聽java進程
#監聽某個進程,需要手動指定序列號
java -jar arthas-boot.jar
#按名稱監聽某個進程
java -jar arthas-boot.jar --select com.Application
命令執行結果如下:
dashboard命令
使用dashborard命令可以動態查看查看java程序的線程信息,內存等信息。
#查看pid對應的進程信息
dashboard pid
命令執行結果如下:
thread命令
使用thread命令可以查看線程的狀態,線程的棧信息。
#查看線程對應的棧信息
thread pid
命令執行結果如下:
jad命令
使用jad命令可以反編譯class文件的信息。
#反編譯 class文件
jad classname
命令執行結果如下:
monitor命令
使用monitor命令可以監控方法的成功和失敗執行次數,非實時返回。
#-c表達循環周期,這里指定的是5s
monitor -c 5 class method
trace命令
使用trace命令,可以查看方法內部的調用路徑和方法耗時,消耗時間最長的方法會用紅色標記。
trace class method
#次數調用限制
trace class method run -n 1
#執行時間調用限制
trace class method run '#cost > 10'
watch命令
使用watch命令可以查看方法執行時的入參,返回值,異常等信息,並且也可以選擇監聽的時機,如方法執行之前,方法執行之后。
#查看方法返回值
watch class method returnObj
#查看方法入參和返回值
watch class method "{params,returnObj}"
#查看異常時的方式信息
watch class method "{params[0],throwExp}" -e
heapdump命令
我們可以使用heapdump來導出java程序的堆dump信息,導出來的hprof可以使用jhat命令和jvisualvm工具查看。
heapdump filename.hprof
異步任務
#查看正在運行的任務
jobs
#將后台任務轉為前台
fg 序號
#將前台任務轉為后台
bg 序號
#后台執行任務,使用&
trace class method &
webConsole
默認地址為:http://127.0.0.1:3658/。
exit命令
使用exit命令,即可退出arthas。
jvm命令
使用jvm命令,查看當前 JVM 的信息
博主微信公眾號
