真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java中arthas如何使用

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

創(chuàng)新互聯(lián)憑借專業(yè)的設(shè)計(jì)團(tuán)隊(duì)扎實(shí)的技術(shù)支持、優(yōu)質(zhì)高效的服務(wù)意識(shí)和豐厚的資源優(yōu)勢(shì),提供專業(yè)的網(wǎng)站策劃、網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作、網(wǎng)站優(yōu)化、軟件開(kāi)發(fā)、網(wǎng)站改版等服務(wù),在成都十載的網(wǎng)站建設(shè)設(shè)計(jì)經(jīng)驗(yàn),為成都上千余家中小型企業(yè)策劃設(shè)計(jì)了網(wǎng)站。

下載Arthas

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

2.2 運(yùn)行Arthas

把下載好的arthas-boot.jar包放到想要監(jiān)測(cè)的java應(yīng)用所在服務(wù)器,跟Spring Boot應(yīng)用一樣,直接使用java命令運(yùn)行即可。

java -jar arthas-boot.jar

注意:

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

  • 啟動(dòng)后,會(huì)列出當(dāng)前的java應(yīng)用列表(有點(diǎn)像jps -l),輸出序號(hào)選擇想要監(jiān)測(cè)的應(yīng)用即可。

啟動(dòng)后即進(jìn)行Arthas的命令行界面,可以使用Arthas提供的命令來(lái)實(shí)現(xiàn)需要監(jiān)測(cè)的功能。如下圖,需要監(jiān)測(cè)的java應(yīng)用是示例java-monitor-example。

java中arthas如何使用

2.3 退出

如果只是退出當(dāng)前的連接,可以用quit或者exit命令。Attach到目標(biāo)進(jìn)程上的arthas還會(huì)繼續(xù)運(yùn)行,端口會(huì)保持開(kāi)放,下次連接時(shí)可以直接連接上。

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

3 Arthas使用

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

  • 基本命令:help、catpwdhistory,quit等等,跟linux的命令差不多。

  • jvm相關(guān):dashboard、threadjvm、sysenv等等,主要是對(duì)JVM信息的監(jiān)測(cè),跟之前學(xué)習(xí)java命令行工具jinfo、jmapjstack等有異曲同工之妙。

  • class/classloader相關(guān):sc、smjad、dump、classloader等等。

  • monitor/watch/trace相關(guān):monitorwatch、trace、stack等等,這些功能基本涵蓋了BTrace中所實(shí)現(xiàn)的功能,包括定時(shí)檢測(cè),方法參數(shù),返回值,調(diào)用時(shí)長(zhǎng)等。

下面對(duì)常用的幾個(gè)命令進(jìn)行說(shuō)明,詳細(xì)的命令列表請(qǐng)查閱官方文檔。

3.1 概覽:dashboard

啟動(dòng)Arthas后,-h查看使用幫助:

$ dashboard -h
 USAGE:
   dashboard [-b] [-h] [-i ] [-n ]

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

 EXAMPLES:
   dashboard
   dashboard -n 10
   dashboard -i 2000

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

java中arthas如何使用

這個(gè)概覽的信息默認(rèn)5秒刷新一次,對(duì)于內(nèi)存變化,線程占用情況,GC次數(shù),一目了然。使用ctrl+c退出。

3.2 線程信息:thread

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

$ thread -h
 USAGE:
   thread [-h] [-b] [-i ] [-n ] [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                                         Specify the sampling interval (in ms) when calculating cpu usage.
 -n, --top-n-threads                                           The number of thread(s) to show, ordered by cpu utilization, -1 to show all.
      Show thread stack

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

3.3 JVM信息:jvm

jvm命令很簡(jiǎn)單,沒(méi)有參數(shù),它輸出的信息包括運(yùn)行參數(shù),類加載信息, 內(nèi)存情況,系統(tǒng)信息,線程數(shù)信息,文件描述符等。有點(diǎn)像jvisualvm的中概述,但比它更詳細(xì)。

3.4 反編譯:jad

有時(shí)需要檢測(cè)線上運(yùn)行的應(yīng)用中,新的代碼是否有使用或者是否有更新到,可以把加載的類反編譯出來(lái),查看源碼是否為最新的,這時(shí)jad就很有用。-h打印使用幫助:

$ jad -h
 USAGE:
   jad [-c ] [-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                                                    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 name pattern, use either '.' or '/' as separator
                                                         method name pattern, decompile a specific method instead of the whole class

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

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

monitor可以定時(shí)輸出方法的執(zhí)行情況進(jìn)行監(jiān)控,包括調(diào)用次數(shù),成功次數(shù),失敗次數(shù),平均時(shí)長(zhǎng),失敗率等,有點(diǎn)像BTrace中的@Timer,但是更方便。-h查看使用幫助:

$ monitor -h
 USAGE:
   monitor [-c ] [-h] [-n ] [-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                                                   The monitor interval (in seconds), 60 seconds by default
 -h, --help                                                           this help
 -n, --limits                                                  Threshold of execution times
 -E, --regex                                                          Enable regular expression to match (wildcard matching by default)
                                                       Path and classname of Pattern Matching
                                                      Method of Pattern Matching

如上面所示的EXAMPLES,可以監(jiān)測(cè)方法執(zhí)行情況,默認(rèn)是60s輸出一次,可以使用-c來(lái)修改輸出間隔時(shí)間。

3.6 方法執(zhí)行數(shù)據(jù)監(jiān)測(cè):watch

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

$ watch -h
 USAGE:
   watch [-b] [-e] [-x ] [-f] [-h] [-n ] [-E] [-M ] [-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     Expand level of object (1 by default)
 -f, --finish         Watch after invocation, enable by default
 -h, --help           this help
 -n, --limits    Threshold of execution times
 -E, --regex    Enable regular expression to match (wildcard matching by default)
 -M, --sizeLimit    Upper size limit in bytes for the result (10 * 1024 * 1024 by default)
 -s, --success      Watch after successful invocation
     The full qualified class name you want to watch
    The method name you want to watch
           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,監(jiān)測(cè)時(shí)機(jī)分別是方法執(zhí)行前(-b),方法執(zhí)行結(jié)束(-f,默認(rèn)值),方法執(zhí)行成功(-s)。監(jiān)測(cè)內(nèi)容包括:參數(shù)(params),返回值(returnObj),異常(throwExp)等。

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。


分享文章:java中arthas如何使用
分享鏈接:http://weahome.cn/article/ipdsgs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部