中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java中arthas如何使用

發布時間:2021-07-30 11:33:39 來源:億速云 閱讀:211 作者:Leah 欄目:大數據

java中arthas如何使用,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

下載Arthas

wget https://alibaba.github.io/arthas/arthas-boot.jar

2.2 運行Arthas

把下載好的arthas-boot.jar包放到想要監測的java應用所在服務器,跟Spring Boot應用一樣,直接使用java命令運行即可。

java -jar arthas-boot.jar

注意:

  • 第一次運行,下載慢可以使用--repo-mirror aliyun --use-http

  • 啟動后,會列出當前的java應用列表(有點像jps -l),輸出序號選擇想要監測的應用即可。

啟動后即進行Arthas的命令行界面,可以使用Arthas提供的命令來實現需要監測的功能。如下圖,需要監測的java應用是示例java-monitor-example

java中arthas如何使用

2.3 退出

如果只是退出當前的連接,可以用quit或者exit命令。Attach到目標進程上的arthas還會繼續運行,端口會保持開放,下次連接時可以直接連接上。

如果想完全退出arthas,可以執行shutdown命令。

3 Arthas使用

Arthas的使用就是需要學會使用它提供的命令功能,主要分為幾大類:

  • 基本命令:helpcatpwdhistoryquit等等,跟linux的命令差不多。

  • jvm相關:dashboardthreadjvmsysenv等等,主要是對JVM信息的監測,跟之前學習java命令行工具jinfojmapjstack等有異曲同工之妙。

  • class/classloader相關:scsmjaddumpclassloader等等。

  • monitor/watch/trace相關:monitorwatchtracestack等等,這些功能基本涵蓋了BTrace中所實現的功能,包括定時檢測,方法參數,返回值,調用時長等。

下面對常用的幾個命令進行說明,詳細的命令列表請查閱官方文檔。

3.1 概覽:dashboard

啟動Arthas后,-h查看使用幫助:

$ dashboard -h
 USAGE:
   dashboard [-b] [-h] [-i <value>] [-n <value>]

 SUMMARY:
   Overview of target jvm's thread, memory, gc, vm, tomcat info.

 EXAMPLES:
   dashboard
   dashboard -n 10
   dashboard -i 2000

相當于概覽,在一個界面中顯示線程、內存、gc情況,vm情況和tomcat信息。如下圖(官方文檔的示例圖):

java中arthas如何使用

這個概覽的信息默認5秒刷新一次,對于內存變化,線程占用情況,GC次數,一目了然。使用ctrl+c退出。

3.2 線程信息:thread

還記得jstack嗎,我們需要先找出線程ID,使用它導出線程堆棧,然后使用線程ID查看。在Arthas中就方便多了,像上面dashboard中,已經有ID,直接使用thread id即可。-h查看幫助文檔:

$ thread -h
 USAGE:
   thread [-h] [-b] [-i <value>] [-n <value>] [id]

 SUMMARY:
   Display thread info, thread stack

 EXAMPLES:
   thread
   thread 51
   thread -n -1
   thread -n 5
   thread -b
   thread -i 2000

 OPTIONS:
 -h, --help                                                           this help
 -b, --include-blocking-thread                                        Find the thread who is holding a lock that blocks the most number of threads.
 -i, --sample-interval <value>                                        Specify the sampling interval (in ms) when calculating cpu usage.
 -n, --top-n-threads <value>                                          The number of thread(s) to show, ordered by cpu utilization, -1 to show all.
 <id>     Show thread stack

如上面所示的EXAMPLES,使用thread命令,可以找出占用CPU最高前N個線程(-n),可以打印指定線程的運行堆棧(id),找出當前阻塞其他線程的線程(-b),由此來分析線程問題很方便。

3.3 JVM信息:jvm

jvm命令很簡單,沒有參數,它輸出的信息包括運行參數,類加載信息, 內存情況,系統信息,線程數信息,文件描述符等。有點像jvisualvm的中概述,但比它更詳細。

3.4 反編譯:jad

有時需要檢測線上運行的應用中,新的代碼是否有使用或者是否有更新到,可以把加載的類反編譯出來,查看源碼是否為最新的,這時jad就很有用。-h打印使用幫助:

$ jad -h
 USAGE:
   jad [-c <value>] [-h] [-E] [--source-only] class-pattern [method-name]

 EXAMPLES:
   jad java.lang.String
   jad java.lang.String toString
   jad --source-only java.lang.String
   jad -c 39eb305e org/apache/log4j/Logger
   jad -c 39eb305e -E org\\.apache\\.*\\.StringUtils

 OPTIONS:
 -c, --code <value>                                                   The hash code of the special class's classLoader
 -h, --help                                                           this help
 -E, --regex                                                          Enable regular expression to match (wildcard matching by default)
     --source-only                                                    Output source code only
 <class-pattern>                                                      Class name pattern, use either '.' or '/' as separator
 <method-name>                                                        method name pattern, decompile a specific method instead of the whole class

如上面所示的EXAMPLES,jad可以反編譯類(class-pattern),反編譯類的某個方法(method-name),如果有多個classLoader,還可以使用-c來選擇顯示哪個等。

3.5 方法執行監控:monitor

monitor可以定時輸出方法的執行情況進行監控,包括調用次數,成功次數,失敗次數,平均時長,失敗率等,有點像BTrace中的@Timer,但是更方便。-h查看使用幫助:

$ monitor -h
 USAGE:
   monitor [-c <value>] [-h] [-n <value>] [-E] class-pattern method-pattern

 SUMMARY:
   Monitor method execution statistics, e.g. total/success/failure count, average rt, fail rate, etc.

 Examples:
   monitor org.apache.commons.lang.StringUtils isBlank
   monitor org.apache.commons.lang.StringUtils isBlank -c 5
   monitor -E org\.apache\.commons\.lang\.StringUtils isBlank

 OPTIONS:
 -c, --cycle <value>                                                  The monitor interval (in seconds), 60 seconds by default
 -h, --help                                                           this help
 -n, --limits <value>                                                 Threshold of execution times
 -E, --regex                                                          Enable regular expression to match (wildcard matching by default)
 <class-pattern>                                                      Path and classname of Pattern Matching
 <method-pattern>                                                     Method of Pattern Matching

如上面所示的EXAMPLES,可以監測方法執行情況,默認是60s輸出一次,可以使用-c來修改輸出間隔時間。

3.6 方法執行數據監測:watch

類似于BTrace@OnMethod,若想在線上的應用中把執行方法時的參數,返回值,異常信息,watch命令就非常合適。-h使用幫助:

$ watch -h
 USAGE:
   watch [-b] [-e] [-x <value>] [-f] [-h] [-n <value>] [-E] [-M <value>] [-s] class-pattern method-pattern express [condition-express]

 SUMMARY:
   Display the input/output parameter, return object, and thrown exception of specified method invocation
   The express may be one of the following expression (evaluated dynamically):
           target : the object
            clazz : the object's class
           method : the constructor or method
           params : the parameters array of method
     params[0..n] : the element of parameters array
        returnObj : the returned object of method
         throwExp : the throw exception of method
         isReturn : the method ended by return
          isThrow : the method ended by throwing exception
            #cost : the execution time in ms of method invocation
 Examples:
   watch -b org.apache.commons.lang.StringUtils isBlank params
   watch -f org.apache.commons.lang.StringUtils isBlank returnObj
   watch org.apache.commons.lang.StringUtils isBlank '{params, target, returnObj}' -x 2
   watch -bf *StringUtils isBlank params
   watch *StringUtils isBlank params[0]
   watch *StringUtils isBlank params[0] params[0].length==1
   watch *StringUtils isBlank params '#cost>100'
   watch -E -b org\.apache\.commons\.lang\.StringUtils isBlank params[0]
 OPTIONS:
 -b, --before         Watch before invocation
 -e, --exception      Watch after throw exception
 -x, --expand <value>    Expand level of object (1 by default)
 -f, --finish         Watch after invocation, enable by default
 -h, --help           this help
 -n, --limits <value>   Threshold of execution times
 -E, --regex    Enable regular expression to match (wildcard matching by default)
 -M, --sizeLimit <value>   Upper size limit in bytes for the result (10 * 1024 * 1024 by default)
 -s, --success      Watch after successful invocation
 <class-pattern>    The full qualified class name you want to watch
 <method-pattern>   The method name you want to watch
 <express>          the content you want to watch, written by ognl.
			        Examples:
			              params 
			              params[0]
			              'params[0]+params[1]'
			              '{params[0], target, returnObj}'
			              returnObj
			              throwExp
			              target
			              clazz
			              method

如上面所示的EXAMPLES,監測時機分別是方法執行前(-b),方法執行結束(-f,默認值),方法執行成功(-s)。監測內容包括:參數(params),返回值(returnObj),異常(throwExp)等。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

招远市| 正镶白旗| 光泽县| 乌海市| 邯郸县| 甘孜| 门源| 德化县| 麟游县| 竹溪县| 兴化市| 遂溪县| 佛教| 府谷县| 吉安县| 康乐县| 十堰市| 钦州市| 肥东县| 通道| 莆田市| 亚东县| 天水市| 广丰县| 连州市| 秭归县| 万全县| 池州市| 缙云县| 太仓市| 南开区| 久治县| 驻马店市| 平湖市| 东兰县| 射阳县| 多伦县| 玛纳斯县| 湘潭市| 闸北区| 涞水县|