亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

1、是什么

你是否曾遇到過生產(chǎn)環(huán)境出問題,但無法進(jìn)行問題線上定位,只能想辦法在開發(fā)環(huán)境重現(xiàn)問題???

Arthas是Alibaba開源的JAVA診斷工具。

2、可以解決什么?

(1)這個(gè)類從哪個(gè)jar包加載的?為什么會(huì)報(bào)各種類相關(guān)的Exception。

(2)更改的代碼為什么沒執(zhí)行?

(3)無法線上debug的問題

(4)線上某個(gè)數(shù)據(jù)有問題,但無法線上debug,線下無法重現(xiàn)。

(5)是否有一個(gè)全局視角來查看系統(tǒng)的運(yùn)行狀況?

(6)有什么辦法可以監(jiān)控到JVM的實(shí)時(shí)運(yùn)行狀態(tài)?

3、基本使用

(1)啟動(dòng)arthas-boot

下載arthas-boot.jar,再用java -jar啟動(dòng)

wget https://alibaba.github.io/arthas/arthas-boot.jar
java -jar arthas-boot.jar 
推薦一個(gè)生產(chǎn)環(huán)境問題排查利器

 

-h:表示輸出幫助信息

arthas-boot.jar是Arthas的啟動(dòng)程序,啟動(dòng)后,會(huì)列出所有的java進(jìn)程。

推薦一個(gè)生產(chǎn)環(huán)境問題排查利器

 

如果想跟進(jìn)某個(gè)java進(jìn)程,只需要輸入對(duì)應(yīng)的序號(hào)即可,Arthas會(huì)attach到目標(biāo)進(jìn)程上,并輸出日志。

推薦一個(gè)生產(chǎn)環(huán)境問題排查利器

 

(2)查看dashboard

輸入dashboard,會(huì)展示當(dāng)前進(jìn)程的信息

(3)通過sysenv命令獲取進(jìn)程的Main class

$ sysenv | grep MAIN
 JAVA_MAIN_CLASS_71560              demo.MathGame

(4)通過jad來反編譯某個(gè)類

jad 類的全限定名

(5)watch

通過watch命令來查看某個(gè)類的某個(gè)方法的返回值

watch 類的全限定名 方法名 returnObj

例如:

watch demo.MathGame primeFactors returnObj

4、進(jìn)階使用

基礎(chǔ)命令

  • help——查看命令幫助信息
  • cls——清空當(dāng)前屏幕區(qū)域
  • session——查看當(dāng)前會(huì)話的信息
  • reset——重置增強(qiáng)類,將被 Arthas 增強(qiáng)過的類全部還原,Arthas 服務(wù)端關(guān)閉時(shí)會(huì)重置所有增強(qiáng)過的類
  • version——輸出當(dāng)前目標(biāo) Java 進(jìn)程所加載的 Arthas 版本號(hào)
  • history——打印命令歷史
  • quit——退出當(dāng)前 Arthas 客戶端,其他 Arthas 客戶端不受影響
  • shutdown——關(guān)閉 Arthas 服務(wù)端,所有 Arthas 客戶端全部退出
  • keymap——Arthas快捷鍵列表及自定義快捷鍵

jvm相關(guān)

  • dashboard——當(dāng)前系統(tǒng)的實(shí)時(shí)數(shù)據(jù)面板
  • thread——查看當(dāng)前 JVM 的線程堆棧信息
  • jvm——查看當(dāng)前 JVM 的信息
  • sysprop——查看和修改JVM的系統(tǒng)屬性
  • sysenv——查看JVM的環(huán)境變量
  • New!getstatic——查看類的靜態(tài)屬性

class/classloader相關(guān)

  • sc——查看JVM已加載的類信息
  • sm——查看已加載類的方法信息
  • dump——dump 已加載類的 byte code 到特定目錄
  • redefine——加載外部的.class文件,redefine到JVM里
  • jad——反編譯指定已加載類的源碼
  • classloader——查看classloader的繼承樹,urls,類加載信息,使用classloader去getResource

monitor/watch/trace相關(guān)

請(qǐng)注意,這些命令,都通過字節(jié)碼增強(qiáng)技術(shù)來實(shí)現(xiàn)的,會(huì)在指定類的方法中插入一些切面來實(shí)現(xiàn)數(shù)據(jù)統(tǒng)計(jì)和觀測,因此在線上、預(yù)發(fā)使用時(shí),請(qǐng)盡量明確需要觀測的類、方法以及條件,診斷結(jié)束要執(zhí)行 shutdown 或?qū)⒃鰪?qiáng)過的類執(zhí)行 reset 命令。

  • monitor——方法執(zhí)行監(jiān)控
  • watch——方法執(zhí)行數(shù)據(jù)觀測
  • trace——方法內(nèi)部調(diào)用路徑,并輸出方法路徑上的每個(gè)節(jié)點(diǎn)上耗時(shí)
  • stack——輸出當(dāng)前方法被調(diào)用的調(diào)用路徑
  • tt——方法執(zhí)行數(shù)據(jù)的時(shí)空隧道,記錄下指定方法每次調(diào)用的入?yún)⒑头祷匦畔ⅲ⒛軐?duì)這些不同的時(shí)間下調(diào)用進(jìn)行觀測

options

options——查看或設(shè)置Arthas全局開關(guān)

管道

Arthas支持使用管道對(duì)上述命令的結(jié)果進(jìn)行進(jìn)一步的處理,如sm org.Apache.log4j.Logger | grep

  • grep——搜索滿足條件的結(jié)果
  • plaintext——將命令的結(jié)果去除顏色
  • wc——按行統(tǒng)計(jì)輸出結(jié)果

后臺(tái)異步任務(wù)

當(dāng)線上出現(xiàn)偶發(fā)的問題,比如需要watch某個(gè)條件,而這個(gè)條件一天可能才會(huì)出現(xiàn)一次時(shí),異步后臺(tái)任務(wù)就派上用場了,詳情請(qǐng)參考這里

使用 > 將結(jié)果重寫向到日志文件,使用 & 指定命令是后臺(tái)運(yùn)行,session斷開不影響任務(wù)執(zhí)行(生命周期默認(rèn)為1天) jobs——列出所有job kill——強(qiáng)制終止任務(wù) fg——將暫停的任務(wù)拉到前臺(tái)執(zhí)行 bg——將暫停的任務(wù)放到后臺(tái)執(zhí)行

Web Console

通過websocket連接Arthas。

Web Console

其他特性

  • 異步命令支持
  • 執(zhí)行結(jié)果存日志
  • 批處理的支持
  • ognl表達(dá)式的用法說明

5、命令詳細(xì)

(1)jad

反編譯已加載類的源碼

jad 命令將 JVM 中實(shí)際運(yùn)行的 class 的 byte code 反編譯成 java 代碼,便于你理解業(yè)務(wù)邏輯;

  • 在 Arthas Console 上,反編譯出來的源碼是帶語法高亮的,閱讀更方便
  • 當(dāng)然,反編譯出來的 java 代碼可能會(huì)存在語法錯(cuò)誤,但不影響你進(jìn)行閱讀理解
class-pattern 類名表達(dá)式匹配
[c:] 類所屬 ClassLoader 的 hashcode
[E] 開啟正則表達(dá)式匹配,默認(rèn)為通配符匹配

1、反編譯指定方法

jad 類的全限定名 方法

例如:

  • 反編譯某個(gè)類
推薦一個(gè)生產(chǎn)環(huán)境問題排查利器

 

  • 反編譯某個(gè)類的某個(gè)方法
推薦一個(gè)生產(chǎn)環(huán)境問題排查利器

 

(2)watch

方法執(zhí)行數(shù)據(jù)監(jiān)測

讓你能方便的觀察到指定方法的調(diào)用情況。能觀察到的范圍為:返回值、拋出異常、入?yún)ⅲㄟ^編寫 OGNL 表達(dá)式進(jìn)行對(duì)應(yīng)變量的查看。

參數(shù):

class-pattern 類名表達(dá)式匹配
method-pattern 方法名表達(dá)式匹配
express 觀察表達(dá)式
condition-express 條件表達(dá)式
[b] 在方法調(diào)用之前觀察
[e] 在方法異常之后觀察
[s] 在方法返回之后觀察
[f] 在方法結(jié)束之后(正常返回和異常返回)觀察
[E] 開啟正則表達(dá)式匹配,默認(rèn)為通配符匹配
[x:] 指定輸出結(jié)果的屬性遍歷深度,默認(rèn)為 1

這里重點(diǎn)要說明的是觀察表達(dá)式,觀察表達(dá)式的構(gòu)成主要由 ognl 表達(dá)式組成,所以你可以這樣寫"{params,returnObj}",只要是一個(gè)合法的 ognl 表達(dá)式,都能被正常支持。

「1、觀察方法出參和返回值」

$ watch com.liusy.arthas_demo.controller.ArthasController test "{params,returnObj}" -x 2
推薦一個(gè)生產(chǎn)環(huán)境問題排查利器

 

「2、觀察方法入?yún)ⅰ?/strong>

$ watch com.liusy.arthas_demo.controller.ArthasController test "{params,returnObj}" -x 2 -b
推薦一個(gè)生產(chǎn)環(huán)境問題排查利器

 

「3、同時(shí)觀察方法調(diào)用前和方法返回后」

$ watch com.liusy.arthas_demo.controller.ArthasController test "{params,returnObj}" -x 2 -b -s 
推薦一個(gè)生產(chǎn)環(huán)境問題排查利器

 

「4、調(diào)整-x的值,觀察具體的方法參數(shù)值」x表示層級(jí)數(shù)

$ watch com.liusy.arthas_demo.controller.ArthasController test "{params,returnObj}" -x 3 
推薦一個(gè)生產(chǎn)環(huán)境問題排查利器

 

「5、條件表達(dá)式的例子」

$  watch com.liusy.arthas_demo.controller.ArthasController test "{params, returnObj}" "params[0].id == 1" -x 2
推薦一個(gè)生產(chǎn)環(huán)境問題排查利器

 

只有滿足條件的調(diào)用,才會(huì)有響應(yīng)

「6、觀察異常信息」

$ watch com.liusy.arthas_demo.controller.ArthasController test "{params, throwExp}"  -e -x 2 

「7、按照耗時(shí)進(jìn)行過濾」

$ watch com.liusy.arthas_demo.controller.ArthasController test "{params,returnObj}" #cost>200 -x 3 
推薦一個(gè)生產(chǎn)環(huán)境問題排查利器

 

?

#cost>200(單位是ms)表示只有當(dāng)耗時(shí)大于200ms時(shí)才會(huì)輸出,過濾掉執(zhí)行時(shí)間小于200ms的調(diào)用

?

「8、觀察當(dāng)前對(duì)象中的全局屬性」

$ watch com.liusy.arthas_demo.controller.ArthasController test 'target'
推薦一個(gè)生產(chǎn)環(huán)境問題排查利器

 

如果想查看方法運(yùn)行前后,當(dāng)前對(duì)象中的全局屬性,可以使用target關(guān)鍵字,代表當(dāng)前對(duì)象

然后使用target.field_name訪問當(dāng)前對(duì)象的某個(gè)全局屬性

$ watch com.liusy.arthas_demo.controller.ArthasController test 'target.service'

(3)trace

方法內(nèi)部調(diào)用路徑,并輸出方法路徑上的每個(gè)節(jié)點(diǎn)上耗時(shí)

trace 命令能主動(dòng)搜索 class-pattern/method-pattern 對(duì)應(yīng)的方法調(diào)用路徑,渲染和統(tǒng)計(jì)整個(gè)調(diào)用鏈路上的所有性能開銷和追蹤調(diào)用鏈路。

class-pattern 類名表達(dá)式匹配
method-pattern 方法名表達(dá)式匹配
condition-express 條件表達(dá)式
[E] 開啟正則表達(dá)式匹配,默認(rèn)為通配符匹配
[n:] 命令執(zhí)行次數(shù)
#cost 方法執(zhí)行耗時(shí)

例如:

trace com.liusy.arthas_demo.controller.ArthasController test
推薦一個(gè)生產(chǎn)環(huán)境問題排查利器

 

按照耗時(shí)過濾:

trace com.liusy.arthas_demo.controller.ArthasController test #cost>1
推薦一個(gè)生產(chǎn)環(huán)境問題排查利器

 

(4)stack

輸出當(dāng)前方法被調(diào)用的調(diào)用路徑

很多時(shí)候我們都知道一個(gè)方法被執(zhí)行,但這個(gè)方法被執(zhí)行的路徑非常多,或者你根本就不知道這個(gè)方法是從那里被執(zhí)行了,此時(shí)你需要的是 stack 命令。

class-pattern 類名表達(dá)式匹配
method-pattern 方法名表達(dá)式匹配
condition-express 條件表達(dá)式
[E] 開啟正則表達(dá)式匹配,默認(rèn)為通配符匹配
[n:] 執(zhí)行次數(shù)限制

例如:

按照耗時(shí)查詢,只會(huì)打印出耗時(shí)小于30ms的堆棧情況

stack com.liusy.arthas_demo.controller.ArthasController test #cost<30
推薦一個(gè)生產(chǎn)環(huán)境問題排查利器

 

(5)sc

查看jvm已加載的類信息

Search-Class” 的簡寫,這個(gè)命令能搜索出所有已經(jīng)加載到 JVM 中的 Class 信息,這個(gè)命令支持的參數(shù)有 [d]、[E]、[f] 和 [x:]。

參數(shù)說明:

class-pattern 類名表達(dá)式匹配
method-pattern 方法名表達(dá)式匹配
[d] 輸出當(dāng)前類的詳細(xì)信息,包括這個(gè)類所加載的原始文件來源、類的聲明、加載的ClassLoader等詳細(xì)信息。如果一個(gè)類被多個(gè)ClassLoader所加載,則會(huì)出現(xiàn)多次
[E] 開啟正則表達(dá)式匹配,默認(rèn)為通配符匹配
[f] 輸出當(dāng)前類的成員變量信息(需要配合參數(shù)-d一起使用)
[x:] 指定輸出靜態(tài)變量時(shí)屬性的遍歷深度,默認(rèn)為 0,即直接使用 toString 輸出

?

class-pattern支持全限定名,如com.liusy.demo,也支持com/liusy/demo這樣的格式.

?

?

sc 默認(rèn)開啟了子類匹配功能,也就是說所有當(dāng)前類的子類也會(huì)被搜索出來,想要精確的匹配,請(qǐng)打開options disable-sub-class true開關(guān)

?

1、查看類的靜態(tài)變量信息

sc -df 類的全限定名
推薦一個(gè)生產(chǎn)環(huán)境問題排查利器

 

(6)sm

查看已加載類的方法信息

“Search-Method” 的簡寫,這個(gè)命令能搜索出所有已經(jīng)加載了 Class 信息的方法信息。

sm 命令只能看到由當(dāng)前類所聲明 (declaring) 的方法,父類則無法看到。

class-pattern 類名表達(dá)式匹配
method-pattern 方法名表達(dá)式匹配
[d] 展示每個(gè)方法的詳細(xì)信息
[E] 開啟正則表達(dá)式匹配,默認(rèn)為通配符匹配
推薦一個(gè)生產(chǎn)環(huán)境問題排查利器

 

(7)dashboard

當(dāng)前進(jìn)程的實(shí)時(shí)數(shù)據(jù)面板(包括內(nèi)存,線程等信息),按ctrl+c退出。

數(shù)據(jù)說明:

ID: Java級(jí)別的線程ID,注意這個(gè)ID不能跟jstack中的nativeID一一對(duì)應(yīng)
NAME: 線程名
GROUP: 線程組名
PRIORITY: 線程優(yōu)先級(jí), 1~10之間的數(shù)字,越大表示優(yōu)先級(jí)越高
STATE: 線程的狀態(tài)
CPU%: 線程消耗的cpu占比,采樣100ms,將所有線程在這100ms內(nèi)的cpu使用量求和,再算出每個(gè)線程的cpu使用占比。
TIME: 線程運(yùn)行總時(shí)間,數(shù)據(jù)格式為分:秒
INTERRUPTED: 線程當(dāng)前的中斷位狀態(tài)
DAEMON: 是否是daemon線程

(8)Thread

查看當(dāng)前線程信息,查看線程的堆棧。

參數(shù)說明:

id 線程id
[n:] 指定最忙的前N個(gè)線程并打印堆棧
[b] 找出當(dāng)前阻塞其他線程的線程
[i <value>] 指定cpu占比統(tǒng)計(jì)的采樣間隔,單位為毫秒

1、一鍵展示當(dāng)前最忙的前n個(gè)線程并打印堆棧。

thread -n 3

2、不帶參數(shù)時(shí),顯示所有線程的信息

3、顯示指定線程的運(yùn)行堆棧

therad id

4、找出當(dāng)前阻塞其他線程的線程

thread -b

目前只支持找出synchronized關(guān)鍵字阻塞住的線程, 如果是java.util.concurrent.Lock, 目前還不支持

5、指定采樣時(shí)間間隔

thread -i 時(shí)間

例如:thread -n 3 -i 1000

(9)jvm

查看當(dāng)前JVM信息

信息說明:

THREAD相關(guān)
COUNT: JVM當(dāng)前活躍的線程數(shù)
DAEMON-COUNT: JVM當(dāng)前活躍的守護(hù)線程數(shù)
PEAK-COUNT: 從JVM啟動(dòng)開始曾經(jīng)活著的最大線程數(shù)
STARTED-COUNT: 從JVM啟動(dòng)開始總共啟動(dòng)過的線程次數(shù)
DEADLOCK-COUNT: JVM當(dāng)前死鎖的線程數(shù)

文件描述符相關(guān)
MAX-FILE-DESCRIPTOR-COUNT:JVM進(jìn)程最大可以打開的文件描述符數(shù)
OPEN-FILE-DESCRIPTOR-COUNT:JVM當(dāng)前打開的文件描述符數(shù)

(10)sysprop

查看當(dāng)前jvm的系統(tǒng)屬性(system property)

1、查看所有屬性

sysprop

2、查看某個(gè)屬性

sysprop java.version

3、修改某個(gè)屬性值

sysprop key value

(11)sysenv

查看當(dāng)前jvm的環(huán)境屬性(system environment variables)

1、查看所有環(huán)境變量

sysenv

2、查看單個(gè)環(huán)境變量

sysenv USER

(12)getstatic

可以查看類的靜態(tài)屬性

getstatic class_name field_name

如果該靜態(tài)屬性是一個(gè)復(fù)雜對(duì)象,還可以支持在該屬性上通過ognl表示進(jìn)行遍歷,過濾,訪問對(duì)象的內(nèi)部屬性等操作。

例如,假設(shè)n是一個(gè)Map,Map的Key是一個(gè)Enum,我們想過濾出Map中Key為某個(gè)Enum的值,可以寫如下命令

$ getstatic com.alibaba.arthas.Test n 'entrySet().iterator.{? #this.key.name()=="STOP"}'
field: n
@ArrayList[
    @Node[STOP=bbb],
]

(13)ognl

執(zhí)行ognl表達(dá)式

參數(shù)說明:

express 執(zhí)行的表達(dá)式
[c:] 執(zhí)行表達(dá)式的 ClassLoader 的 hashcode,默認(rèn)值是SystemClassLoader
[x]     結(jié)果對(duì)象的展開層次,默認(rèn)值1

1、調(diào)用靜態(tài)函數(shù)

ognl '@[email protected]("hello")'

2、獲取靜態(tài)類的靜態(tài)字段

ognl '@demo.MathGame@random'

3、執(zhí)行多行表達(dá)式,賦值給臨時(shí)變量,返回一個(gè)list

$ ognl '#value1=@System@getProperty("java.home"), #value2=@System@getProperty("java.runtime.name"), {#value1, #value2}'
@ArrayList[
    @String[/opt/java/8.0.181-zulu/jre],
    @String[OpenJDK Runtime Environment],
]

(14)dump

dump已加載類的bytecode到特定目錄

參數(shù)說明:

class-pattern 類名表達(dá)式匹配
[c:] 類所屬 ClassLoader 的 hashcode
[E] 開啟正則表達(dá)式匹配,默認(rèn)為通配符匹配

(15)classloader

查看classloader的繼承樹,urls,類加載信息

classloader 命令將 JVM 中所有的classloader的信息統(tǒng)計(jì)出來,并可以展示繼承樹,urls等。

可以讓指定的classloader去getResources,打印出所有查找到的resources的url。對(duì)于ResourceNotFoundException比較有用。

參數(shù)說明:

參數(shù)名稱 參數(shù)說明
[l] 按類加載實(shí)例進(jìn)行統(tǒng)計(jì)
[t] 打印所有ClassLoader的繼承樹
[a] 列出所有ClassLoader加載的類,請(qǐng)謹(jǐn)慎使用
[c:] ClassLoader的hashcode
[c: r:] 用ClassLoader去查找resource

1、按類加載類型查看統(tǒng)計(jì)信息

classloader

2、按類加載實(shí)例查看統(tǒng)計(jì)信息

classloader -l

3、查看ClassLoader的繼承樹

classloader -t

4、查看URLClassLoader實(shí)際的urls

classloader -c 5ffe9775

5、使用ClassLoader去查找resource

$ classloader -c 226b143b -r META-INF/MANIFEST.MF

6、 查找類的class文件:

$ classloader -c 1b6d3586 -r java/lang/String.class

(16)redefine

加載外部的.class文件,redefine jvm已加載的類。

[c:] ClassLoader的hashcode
[p:] 外部的.class文件的完整路徑,支持多個(gè)
例如:redefine -p /tmp/Test.class

(17)monitor

方法執(zhí)行監(jiān)控

對(duì)匹配 class-pattern/method-pattern的類、方法的調(diào)用進(jìn)行監(jiān)控。

monitor 命令是一個(gè)非實(shí)時(shí)返回命令.

實(shí)時(shí)返回命令是輸入之后立即返回,而非實(shí)時(shí)返回的命令,則是不斷的等待目標(biāo) Java 進(jìn)程返回信息,直到用戶輸入 Ctrl+C 為止。

服務(wù)端是以任務(wù)的形式在后臺(tái)跑任務(wù),植入的代碼隨著任務(wù)的中止而不會(huì)被執(zhí)行,所以任務(wù)關(guān)閉后,不會(huì)對(duì)原有性能產(chǎn)生太大影響,而且原則上,任何Arthas命令不會(huì)引起原有業(yè)務(wù)邏輯的改變。

監(jiān)控維度:

timestamp 時(shí)間戳
class Java類
method 方法(構(gòu)造方法、普通方法)
total 調(diào)用次數(shù)
success 成功次數(shù)
fail 失敗次數(shù)
rt 平均RT
fail-rate 失敗率

參數(shù):

class-pattern 類名表達(dá)式匹配
method-pattern 方法名表達(dá)式匹配
[E] 開啟正則表達(dá)式匹配,默認(rèn)為通配符匹配
[c:] 統(tǒng)計(jì)周期,默認(rèn)值為120秒

例如:

$ monitor -c 5 com.alibaba.sample.petstore.web.store.module.screen.ItemList execute

(18)tt

方法執(zhí)行數(shù)據(jù)的時(shí)空隧道,記錄下指定方法每次調(diào)用的入?yún)⒑头祷匦畔ⅲ⒛軐?duì)這些不同的時(shí)間下調(diào)用進(jìn)行觀測

watch 雖然很方便和靈活,但需要提前想清楚觀察表達(dá)式的拼寫,這對(duì)排查問題而言要求太高,因?yàn)楹芏鄷r(shí)候我們并不清楚問題出自于何方,只能靠蛛絲馬跡進(jìn)行猜測。

這個(gè)時(shí)候如果能記錄下當(dāng)時(shí)方法調(diào)用的所有入?yún)⒑头祷刂怠伋龅漠惓?huì)對(duì)整個(gè)問題的思考與判斷非常有幫助。

于是乎,TimeTunnel 命令就誕生了。

  • 命令參數(shù)解析
    • -t

tt 命令有很多個(gè)主參數(shù),-t 就是其中之一。這個(gè)參數(shù)的表明希望記錄下類 *Test 的 print 方法的每次執(zhí)行情況。

  • -n 3

當(dāng)你執(zhí)行一個(gè)調(diào)用量不高的方法時(shí)可能你還能有足夠的時(shí)間用 CTRL+C 中斷 tt 命令記錄的過程,但如果遇到調(diào)用量非常大的方法,瞬間就能將你的 JVM 內(nèi)存撐爆。

此時(shí)你可以通過 -n 參數(shù)指定你需要記錄的次數(shù),當(dāng)達(dá)到記錄次數(shù)時(shí) Arthas 會(huì)主動(dòng)中斷tt命令的記錄過程,避免人工操作無法停止的情況。

INDEX 時(shí)間片段記錄編號(hào),每一個(gè)編號(hào)代表著一次調(diào)用,后續(xù)tt還有很多命令都是基于此編號(hào)指定記錄操作,非常重要。
TIMESTAMP 方法執(zhí)行的本機(jī)時(shí)間,記錄了這個(gè)時(shí)間片段所發(fā)生的本機(jī)時(shí)間
COST(ms) 方法執(zhí)行的耗時(shí)
IS-RET 方法是否以正常返回的形式結(jié)束
IS-EXP 方法是否以拋異常的形式結(jié)束
OBJECT 執(zhí)行對(duì)象的hashCode(),注意,曾經(jīng)有人誤認(rèn)為是對(duì)象在JVM中的內(nèi)存地址,但很遺憾他不是。但他能幫助你簡單的標(biāo)記當(dāng)前執(zhí)行方法的類實(shí)體
CLASS 執(zhí)行的類名
METHOD 執(zhí)行的方法名

(19)options

全局開關(guān)

名稱默認(rèn)值描述unsafefalse是否支持對(duì)系統(tǒng)級(jí)別的類進(jìn)行增強(qiáng),打開該開關(guān)可能導(dǎo)致把JVM搞掛,請(qǐng)慎重選擇!dumpfalse是否支持被增強(qiáng)了的類dump到外部文件中,如果打開開關(guān),class文件會(huì)被dump到/${Application dir}/arthas-class-dump/目錄下,具體位置詳見控制臺(tái)輸出batch-re-transformtrue是否支持批量對(duì)匹配到的類執(zhí)行retransform操作json-formatfalse是否支持json化的輸出disable-sub-classfalse是否禁用子類匹配,默認(rèn)在匹配目標(biāo)類的時(shí)候會(huì)默認(rèn)匹配到其子類,如果想精確匹配,可以關(guān)閉此開關(guān)debug-for-asmfalse打印ASM相關(guān)的調(diào)試信息save-resultfalse是否打開執(zhí)行結(jié)果存日志功能,打開之后所有命令的運(yùn)行結(jié)果都將保存到/home/admin/logs/arthas/arthas.log中job-timeout1d異步后臺(tái)任務(wù)的默認(rèn)超時(shí)時(shí)間,超過這個(gè)時(shí)間,任務(wù)自動(dòng)停止;比如設(shè)置 1d, 2h, 3m, 25s,分別代表天、小時(shí)、分、秒

例如,想打開執(zhí)行結(jié)果存日志功能,輸入如下命令即可:

$ options save-result true      

分享到:
標(biāo)簽:環(huán)境 生產(chǎn)
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績?cè)u(píng)定