有時候忽然一個問題反饋上來,須要入參才能完成定位,但偏偏沒有任何日誌。回去加上從新部署,一杯咖啡時間過去了,是否是很崩潰?git
當你通過反覆這樣幾回折騰以後變得聰明瞭,在本身的代碼的全部入參和出參地方都加上debug日誌,但此次問題彷佛暴露在別人的代碼中了...是否是很無奈?github
忽然遇到線上一個性能問題沒法肯定究竟是哪一個環節的耗時,只能反覆抓jstack猜,還有沒有辦法能夠好好的過日子啦?api
遇到以上問題時,你就是咱們這類工具的目標客戶,此類工具能利用Java6的Instrumentation特性,動態加強你所指定的類,獲取你想要到的信息session
查看已被JVM所加載的類、方法信息curl
方法執行監控jvm
調用量,成功失敗率,響應時間工具
方法執行數據操做性能
入參、返回值、異常信息記錄與查看;支持動做回放ui
性能開銷渲染!atom
跟蹤指定路徑中的方法調用軌跡、耗時
查看方法調用堆棧
在線安裝(推薦)
curl -sLk http://ompc.oss.aliyuncs.com/greys/install.sh|sh
解壓zip文件後,執行如下命令
cd greys sh ./install-local.sh
目標機器啓動
./ga.sh <PID>
./greys.sh <PID>[@IP:PORT]
若是不指定IP和PORT,默認是127.0.0.1和3658
命令 | 說明 |
---|---|
help | 查看命令的幫助文檔,每一個命令和參數都有很詳細的說明 |
sc | 查看JVM已加載的類信息 |
sm | 查看已加載的方法信息 |
monitor | 方法執行監控 |
trace | 渲染方法內部調用路徑,並輸出方法路徑上的每一個節點上耗時 |
ptrace | 強化版的trace命令。經過指定渲染路徑,並可記錄下路徑中全部方法的入參、返值;與tt命令聯動。 |
watch | 方法執行數據觀測 |
tt | 方法執行數據的時空隧道,記錄下指定方法每次調用的入參和返回信息,並能對這些不一樣的時間下調用進行觀測 |
stack | 輸出當前方法被調用的調用路徑 |
version | 輸出當前目標Java進程所加載的Greys版本號 |
quit | 退出greys客戶端 |
shutdown | 關閉greys服務端 |
reset | 重置加強類,將被greys加強過的類所有還原 |
session | 查看當前會話 |
jvm | 查看當前JVM的信息 |
sc命令
sc -df *.impl.ApplyImpl
查看PreLoanImpl類信息
sm命令
sm -d .impl.ApplyImpl
查看ApplyImpl全部方法信息
monitor命令
monitor -c 20 *impl.PostLoanImpl monitorAdd
統計週期爲20s,統計PostLoanImpl類的monitorAdd方法狀況
trace命令
trace cn.fraudmetrix.creditcloud.api.impl.PostLoanImpl monitorAdd
跟蹤PostLoanImpl的monitorAdd方法調用stack並統計調用時間開銷
ptrace命令
ptrace -t cn.fraudmetrix.creditcloud.api.impl.PostLoanImpl monitorAdd
跟蹤PostLoanImpl的monitorAdd方法調用stack中含路徑名爲fraudmetrix並統計調用時間開銷
watch命令
watch -bs *.impl.PostLoanImpl monitorAdd 'params[0] + "\t" + params[1]+ "\t" + returnObj'
查看PostLoanImpl的monitorAdd方法的入參、返回值信息
watch -b *.impl.PostLoanImpl monitorAdd 'params[0]' -x 1
查看PostLoanImpl的monitorAdd方法的第一個入參信息,並展開一層顯示
tt命令
tt -t -n 3 *PostLoanImpl monitorAdd
記錄3次PostLoanImpl類的monitorAdd方法的執行狀況。