亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Arthas使用指南

darkerXi / 1894人閱讀

摘要:注意這個統(tǒng)計也會產生一定的開銷這個接口本身開銷比較大,因此會看到的線程占用一定的百分比,為了降低統(tǒng)計自身的開銷帶來的影響,可以把采樣間隔拉長一些,比如毫秒。

Arthas 能為你做什么?

這個類從哪個 jar 包加載的?為什么會報各種類相關的 Exception?

我改的代碼為什么沒有執(zhí)行到?難道是我沒 commit?分支搞錯了?

遇到問題無法在預發(fā) debug 一下,難道只能通過加日志再重新預發(fā)布嗎?

線上遇到某個用戶的數據處理有問題,但線上同樣無法 debug,線下無法重現,怎么辦?

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

有什么辦法可以監(jiān)控到容器和中間件的實時運行狀態(tài)?

Arthas 是基于 Greys 進行二次開發(fā)的全新在線診斷工具,利用Java6的Instrumentation特性,動態(tài)增強你所指定的類,獲取你想要到的信息, 采用命令行交互模式,同時提供豐富的 Tab 自動補全功能,讓你在定位、分析診斷問題時看每一個操作都看起來是那么的 666

PS:阿里已開源 https://github.com/alibaba/ar...

Arthas安裝及使用

下載壓縮包,上傳到需要被診斷的機器, 解壓縮

安裝: 執(zhí)行 ./install.sh

啟動: 執(zhí)行 ./as.sh pid

常用命令

dashboard

當前系統(tǒng)的實時數據面板

thread

查看當前 JVM 的線程堆棧信息

jvm

查看當前 JVM 的信息

sc

查看JVM已加載的類信息

sm

查看已加載類的方法信息

jad

反編譯指定已加載類的源碼

classloader

查看classloader的繼承樹,urls,類加載信息,使用classloader去getResource

monitor

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

watch

方法執(zhí)行數據觀測

trace

方法內部調用路徑,并輸出方法路徑上的每個節(jié)點上耗時

stack

輸出當前方法被調用的調用路徑

tt

方法執(zhí)行數據的時空隧道,記錄下指定方法每次調用的入參和返回信息,并能對這些不同的時間下調用進行觀測

reset

重置增強類,將被 Arthas 增強過的類全部還原,Arthas 服務端關閉時會重置所有增強過的類

quit

退出當前 Arthas 客戶端,其他 Arthas 客戶端不受影響

shutdown

關閉 Arthas 服務端,所有 Arthas 客戶端全部退出

dashboard

參數解釋

ID: Java級別的線程ID,注意這個ID不能跟jstack中的nativeID一一對應

NAME: 線程名

GROUP: 線程組名

PRIORITY: 線程優(yōu)先級, 1~10之間的數字,越大表示優(yōu)先級越高

STATE: 線程的狀態(tài)

CPU%: 線程消耗的cpu占比,采樣100ms,將所有線程在這100ms內的cpu使用量求和,再算出每個線程的cpu使用占比。

TIME: 線程運行總時間

INTERRUPTE: 線程當前的中斷位狀態(tài)

DAEMON: 是否是daemon線程

thread

參數說明

id

線程id

-n

指定最忙的前N個線程并打印堆棧

b

找出當前阻塞其他線程的線程

-i

指定cpu占比統(tǒng)計的采樣間隔,單位為毫秒

PS: 這里的cpu統(tǒng)計的是,一段采樣間隔內,當前JVM里各個線程所占用的cpu時間占總cpu時間的百分比。其計算方法為: 首先進行一次采樣,獲得所有線程的cpu的使用時間(調用的是java.lang.management.ThreadMXBean#getThreadCpuTime這個接口),然后睡眠一段時間,默認100ms,可以通過-i參數指定,然后再采樣一次,最后得出這段時間內各個線程消耗的cpu時間情況,最后算出百分比。注意: 這個統(tǒng)計也會產生一定的開銷(JDK這個接口本身開銷比較大),因此會看到as的線程占用一定的百分比,為了降低統(tǒng)計自身的開銷帶來的影響,可以把采樣間隔拉長一些,比如5000毫秒。

sc

參數說明

class-pattern

類名表達式匹配

-d

輸出當前類的詳細信息,包括這個類所加載的原始文件來源、類的聲明、加載的ClassLoader等詳細信息。如果一個類被多個ClassLoader所加載,則會出現多次

-E

開啟正則表達式匹配,默認為通配符匹配

-f

輸出當前類的成員變量信息(需要配合參數-d一起使用)

-x

指定輸出靜態(tài)變量時屬性的遍歷深度,默認為 0,即直接使用 toString 輸出

PS: class-pattern支持全限定名,如com.test.AAA,也支持com/test/AAA這樣的格式,這樣,我們從異常堆棧里面把類名拷貝過來的時候,不需要在手動把/替換為.啦,
sc 默認開啟了子類匹配功能,也就是說所有當前類的子類也會被搜索出來,想要精確的匹配,請打開options disable-sub-class true開關

sm

參數說明

class-pattern

類名表達式匹配

method-pattern

方法名表達式匹配

-d
展示每個方法的詳細信息

-E
開啟正則表達式匹配,默認為通配符匹配

PS:查看已加載類的方法信息, “Search-Method” 的簡寫,這個命令能搜索出所有已經加載了 Class 信息的方法信息。
sm 命令只能看到由當前類所聲明 (declaring) 的方法,父類則無法看到

monitor

monitor 命令是一個非實時返回命令,實時返回命令是輸入之后立即返回,而非實時返回的命令,則是不斷的等待目標 Java 進程返回信息,直到用戶輸入 Ctrl+C 為止。服務端是以任務的形式在后臺跑任務,植入的代碼隨著任務的中止而被不會被執(zhí)行,所以任務關閉后,不會對原有性能產生太大影響,而且原則上,任何 Arthas 的命令也不會引起任何原有業(yè)務邏輯的改變

參數說明

class-pattern

類名表達式匹配

method-pattern

方法名表達式匹配

-c
統(tǒng)計周期,默認值為120秒

監(jiān)控項

timestamp 時間戳
class java類
method 方法(構造方法、普通方法)
total 調用次數
success 成功次數
fail 失敗次數
rt 平均rt
fail-rate 失敗率

PS:方法執(zhí)行監(jiān)控, 對匹配 class-pattern/method-pattern的類、方法的調用進行監(jiān)控。

trace

方法內部調用路徑,并輸出方法路徑上的每個節(jié)點上耗時, trace 命令能主動搜索 class-pattern/method-pattern 對應的方法調用路徑,渲染和統(tǒng)計整個調用鏈路上的所有性能開銷和追蹤調用鏈路。

trace 能方便的幫助你定位和發(fā)現因 RT 高而導致的性能問題缺陷,但其每次只能跟蹤一級方法的調用鏈路

trace 在執(zhí)行的過程中本身是會有一定的性能開銷,在統(tǒng)計的報告中并未像 JProfiler 一樣預先減去其自身的統(tǒng)計開銷。所以這統(tǒng)計出來有些許的不準,渲染路徑上調用的類、方法越多,性能偏差越大。但還是能讓你看清一些事情的。

參數說明

class-pattern

類名表達式匹配

method-pattern

方法名表達式匹配

condition-express

條件表達式

-n

命令執(zhí)行次數

#cost

方法執(zhí)行耗時

PS: 很多時候我們只想看到某個方法的rt大于某個時間之后的trace結果,例如trace *StringUtils isBlank "$cost>100"表示當執(zhí)行時間超過100ms的時候,才會輸出trace的結果。

stack

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

參數說明

class-pattern

類名表達式匹配

method-pattern

方法名表達式匹配

condition-express

條件表達式

-n

執(zhí)行次數限制

watch

方法執(zhí)行數據觀測, 讓你能方便的觀察到指定方法的調用情況。能觀察到的范圍為:返回值、拋出異常、入參,通過編寫 groovy 表達式進行對應變量的查看。

參數說明

class-pattern

類名表達式匹配

method-pattern

方法名表達式匹配

express

觀察表達式

condition-express

條件表達式

-b
在方法調用之前觀察(默認關閉)

-e
在方法異常之后觀察(默認關閉)

-s
在方法返回之后觀察(默認關閉)

-f
在方法結束之后(正常返回和異常返回)觀察 (默認開啟)

-x
指定輸出結果的屬性遍歷深度,默認為0

PS:這里重點要說明的是觀察表達式,觀察表達式的構成主要由 groovy 表達式組成,只要是一個合法的 groovy 表達式,都能被正常支持。

觀察的維度也比較多,主要體現在參數 advice 的數據結構上。Advice 參數最主要是封裝了通知節(jié)點的所有信息。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://www.ezyhdfw.cn/yun/69239.html

相關文章

  • 推薦一款阿里開源的 Java 診斷工具,好用到爆!

    摘要:是什么鬼是一款阿里巴巴開源的線上診斷工具,功能非常強大,可以解決很多線上不方便解決的問題。診斷使用的是命令行交互模式,支持,操作系統(tǒng),命令還支持使用鍵對各種信息的自動補全,診斷起來非常利索。顯示當前系統(tǒng)的實時數據面板,按即可退出。 Arthas是什么鬼? Arthas是一款阿里巴巴開源的 Java 線上診斷工具,功能非常強大,可以解決很多線上不方便解決的問題。 Arthas診斷使用的是...

    Rango 評論0 收藏0
  • 愛上Java診斷利器之Arthas

    摘要:是什么摘自的介紹大意為是阿里開源的一個診斷工具,可以幫助開發(fā)人員在不修改代碼或重啟服務器的情況下快速定位線上問題。聽起來確實是我們的程序員的一大福利。參考資料使用手冊 1. Arthas是什么? 摘自Arthas的Github介紹: Arthas is a Java Diagnostic tool open sourced by Alibaba. Arthas allows deve...

    Hancock_Xu 評論0 收藏0
  • Java診斷工具Arthas

    摘要:診斷工具簡介是阿里開源的一個線上診斷工具,發(fā)現阿里還是挺喜歡開源一些技術的,造福人類。昨天試用了一下,發(fā)現真是強大,解決了我工作兩年的很多困擾,有點相見恨晚的感覺。每秒統(tǒng)計方法的調用次數,成功失敗次數和平均響應時間等。具體使用請見。 Java診斷工具Arthas 1. Arthas簡介 Arthas是阿里開源的一個線上java診斷工具,發(fā)現阿里還是挺喜歡開源一些技術的,造福人類。昨天試...

    happyfish 評論0 收藏0
  • 使用Arthas 獲取Spring ApplicationContext還原問題現場

    摘要:背景最近來了個實習僧小弟,安排他實現對目標網站連通性檢測的小功能簡單講就是將下邊的腳本換成代碼來實現百度平臺狀態(tài)不正常,請注意功能實現使用開始執(zhí)行定時任務,檢測百度網站連通性請求百度成功,返回報文請求異常百度執(zhí)行檢測百度網站連通 背景 最近來了個實習僧小弟,安排他實現對目標網站 連通性檢測的小功能,簡單講就是將下邊的shell 腳本換成Java 代碼來實現 #!/bin/bash UR...

    xeblog 評論0 收藏0
  • 使用Arthas 獲取Spring ApplicationContext還原問題現場

    摘要:背景最近來了個實習僧小弟,安排他實現對目標網站連通性檢測的小功能簡單講就是將下邊的腳本換成代碼來實現百度平臺狀態(tài)不正常,請注意功能實現使用開始執(zhí)行定時任務,檢測百度網站連通性請求百度成功,返回報文請求異常百度執(zhí)行檢測百度網站連通 背景 最近來了個實習僧小弟,安排他實現對目標網站 連通性檢測的小功能,簡單講就是將下邊的shell 腳本換成Java 代碼來實現 1#!/bin/bash ...

    Amos 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<