Greys--JVM異常診斷工具


https://github.com/oldmanpushcart/greys-anatomy/wiki/greys-pdf

一、簡介

我們平時在線上或者開發中會遇到各種性能、功能等問題,在運行過程中需要查看方法入參、返回值,或者方法執行的堆棧時間,或者jar沖突時類加載來自那個jar包等問題。我們在開發過程中,可能會打印log日志、手動去打印入參、返回值等,或者自己實現簡單的profile方法,代碼侵入性大且效率較低;另外我們可以使用類似btrace工具去跟蹤,這需要自己去實現btrace腳本,服務端需要啟動agent,也有點小麻煩。后來淘寶聚石用scala寫了個houseMD,但只支持到jdk1.6,后續也沒有更新了;后面又有淘寶同學借鑒了btrace和houseMD,寫了Greys,方便定位常見的java問題,下面簡單介紹其使用方法。

下載地址:http://ompc.oss.aliyuncs.com/greys/release/greys-1.7.6.4-bin.zip

二、安裝

a. 解壓greys-1.7.6.4-bin.zip,目錄結構如下

-rwxr-xr-x. 1 admin admin 1047 11月 7 11:54 ga.sh -rw-r--r--. 1 admin admin 10595 11月 7 11:54 greys-agent.jar -rw-r--r--. 1 admin admin 3472230 11月 7 11:54 greys-core.jar -rwxr-xr-x. 1 admin admin 7972 11月 7 11:54 greys.sh -rwxr-xr-x. 1 admin admin 2927 11月 7 11:54 gs.sh -rwxr-xr-x. 1 admin admin 683 11月 7 11:54 install-local.sh

b. 安裝

cd greys sh ./install-local.sh

三、待監控應用啟動agent

pid為應用進程號

./ga.sh pid 

三、應用監控控制客戶端

pid 為應用進程號, ip為應用所在機器, 3658為agent默認端口號

./greys.sh pid@ip:3658 

或者遠程訪問

./gs.sh ip 

四、Greys命令詳解

命令 說明
help 查看命令的幫助文檔,每個命令和參數都有很詳細的說明
sc 查看JVM已加載的類信息
sm 查看已加載的方法信息
monitor 方法執行監控
trace 渲染方法內部調用路徑,並輸出方法路徑上的每個節點上耗時
ptrace 強化版的trace命令。通過指定渲染路徑,並可記錄下路徑中所有方法的入參、返值;與tt命令聯動
watch 方法執行數據觀測
tt 方法執行數據的時空隧道,記錄下指定方法每次調用的入參和返回信息,並能對這些不同的時間下調用進行觀測
stack 輸出當前方法被調用的調用路徑
js 支持使用JavaScript腳本;支持CommonJS部分規范模塊化(BMD規范)
version 輸出當前目標Java進程所加載的Greys版本號
quit 退出greys客戶端
shutdown 關閉greys服務端
rest 重置增強類,將被greys增強過的類全部還原
session 查看當前會話
jvm 查看當前JVM的信息

示列:

tt -t -n 100 *UserServiceImpl queryById +----------+------------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+ | INDEX | PROCESS-ID | TIMESTAMP | COST(ms) | IS-RET | IS-EXP | OBJECT | CLASS | METHOD | +----------+------------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+ | 1001 | 1001 | 2017-03-08 15:39:11 | 10 | true | false | 0x7204ebf1 | UserServiceImpl | queryById | +----------+------------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+ | 1002 | 1002 | 2017-03-08 15:39:12 | 6 | true | false | 0x7204ebf1 | UserServiceImpl | queryById | +----------+------------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+ | 1003 | 1003 | 2017-03-08 15:39:12 | 5 | true | false | 0x7204ebf1 | UserServiceImpl | queryById | +----------+------------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+ | 1004 | 1004 | 2017-03-08 15:39:13 | 6 | true | false | 0x7204ebf1 | UserServiceImpl | queryById | +----------+------------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+ | 1005 | 1005 | 2017-03-08 15:39:48 | 6 | true | false | 0x7204ebf1 | UserServiceImpl | queryById | +----------+------------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+ | 1006 | 1006 | 2017-03-08 15:39:48 | 5 | true | false | 0x7204ebf1 | UserServiceImpl | queryById | +----------+------------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+ | 1007 | 1007 | 2017-03-08 15:39:49 | 4 | true | false | 0x7204ebf1 | UserServiceImpl | queryById | +----------+------------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+ | 1008 | 1008 | 2017-03-08 15:39:49 | 5 | true | false | 0x7204ebf1 | UserServiceImpl | queryById |

具體使用詳見:https://github.com/oldmanpushcart/greys-anatomy/wiki/greys-pdf


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM