成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Java診斷工具Arthas

happyfish / 3026人閱讀

摘要:診斷工具簡(jiǎn)介是阿里開源的一個(gè)線上診斷工具,發(fā)現(xiàn)阿里還是挺喜歡開源一些技術(shù)的,造福人類。昨天試用了一下,發(fā)現(xiàn)真是強(qiáng)大,解決了我工作兩年的很多困擾,有點(diǎn)相見恨晚的感覺(jué)。每秒統(tǒng)計(jì)方法的調(diào)用次數(shù),成功失敗次數(shù)和平均響應(yīng)時(shí)間等。具體使用請(qǐng)見。

Java診斷工具Arthas 1. Arthas簡(jiǎn)介

Arthas是阿里開源的一個(gè)線上java診斷工具,發(fā)現(xiàn)阿里還是挺喜歡開源一些技術(shù)的,造福人類。昨天試用了一下,發(fā)現(xiàn)真是強(qiáng)大,解決了我工作兩年的很多困擾,有點(diǎn)相見恨晚的感覺(jué)。

根據(jù)官網(wǎng)的說(shuō)明,它能解決下面的問(wèn)題:

當(dāng)你遇到以下類似問(wèn)題而束手無(wú)策時(shí),Arthas可以幫助你解決:

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

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

遇到問(wèn)題無(wú)法在線上 debug,難道只能通過(guò)加日志再重新發(fā)布嗎?

線上遇到某個(gè)用戶的數(shù)據(jù)處理有問(wèn)題,但線上同樣無(wú)法 debug,線下無(wú)法重現(xiàn)!

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

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

Arthas采用命令行交互模式,同時(shí)提供豐富的 Tab 自動(dòng)補(bǔ)全功能,進(jìn)一步方便進(jìn)行問(wèn)題的定位和診斷。

2. Arthas安裝

在Linux下直接執(zhí)行curl -L https://alibaba.github.io/arthas/install.sh | sh,然后執(zhí)行./as.sh就可以進(jìn)入到Arthas的命令行界面。

3. Arthas試用

安裝完后試用了它的監(jiān)控相關(guān)的功能,以后調(diào)試就不那么麻煩了。

# 進(jìn)入命令行界面,剛進(jìn)入的時(shí)候會(huì)顯示所有的java進(jìn)程,選擇對(duì)應(yīng)的數(shù)字然后回車就可以進(jìn)入到對(duì)應(yīng)的進(jìn)程中
./as.sh
Arthas script version: 3.0.4.1
Found existing java process, please choose one and hit RETURN.
  [1]: 27073 org.apache.rocketmq.namesrv.NamesrvStartup
* [2]: 2379 org.apache.catalina.startup.Bootstrap
2
Calculating attach execution time...
Attaching to 2379 using version 3.0.5...

real    0m0.249s
user    0m0.208s
sys    0m0.025s
Attach success.
telnet connecting to arthas server... current timestamp is 1545738424
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is "^]".
  ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.                           
 /  O   |  .--. ""--.  .--"|  "--"  | /  O   "   .-"                          
|  .-.  ||  "--"."   |  |   |  .--.  ||  .-.  |`.  `-.                          
|  | |  ||  |      |  |   |  |  |  ||  | |  |.-"    |                         
`--" `--"`--" "--"   `--"   `--"  `--"`--" `--"`-----"                          
                                                                                

wiki: https://alibaba.github.io/arthas
version: 3.0.4
pid: 2379
timestamp: 1545738424462

$
3.1 monitor命令

monitor可以對(duì)某個(gè)類的某個(gè)方法進(jìn)行周期性監(jiān)控,來(lái)輸出方法的平均響應(yīng)時(shí)間,成功失敗次數(shù),調(diào)用次數(shù)等。

# 每3秒統(tǒng)計(jì)queryCatalog方法的調(diào)用次數(shù),成功失敗次數(shù)和平均響應(yīng)時(shí)間等。
$ monitor -c 3 com.timeline.services.CatalogService queryCatalog
Press Ctrl+C to abort.
Affect(class-cnt:1 , method-cnt:1) cost in 82 ms.


 timestamp            class                                 method        total  success  fail  avg-rt(ms)  fail-rate                                                                      
----------------------------------------------------------------------------------------------------------------------                                                                     
 2018-12-25 19:57:41  com.timeline.services.CatalogService  queryCatalog  3      3        0     2.46        0.00%                                                                          

 timestamp            class                                 method        total  success  fail  avg-rt(ms)  fail-rate                                                                      
----------------------------------------------------------------------------------------------------------------------                                                                     
 2018-12-25 19:57:44  com.timeline.services.CatalogService  queryCatalog  0      0        0     0.00        0.00%                                                                          

 timestamp            class                                 method        total  success  fail  avg-rt(ms)  fail-rate                                                                      
----------------------------------------------------------------------------------------------------------------------                                                                     
 2018-12-25 19:57:47  com.timeline.services.CatalogService  queryCatalog  0      0        0     0.00        0.00%                                                                          

 timestamp            class                                 method        total  success  fail  avg-rt(ms)  fail-rate                                                                      
----------------------------------------------------------------------------------------------------------------------                                                                     
 2018-12-25 19:57:50  com.timeline.services.CatalogService  queryCatalog  2      2        0     2.08        0.00%   

具體使用請(qǐng)見:https://alibaba.github.io/art...。

3.2 watch命令

watch可以監(jiān)控某個(gè)方法的出入?yún)ⅲ惓P畔⒌取?/p>

# 觀察方法的出入?yún)?# -x表示遍歷深度,可以調(diào)整來(lái)打印具體的參數(shù)和結(jié)果內(nèi)容,默認(rèn)值是1。
$watch com.timeline.services.CatalogService queryCatalog "{params,returnObj}" -x 2
Press Ctrl+C to abort.
Affect(class-cnt:1 , method-cnt:1) cost in 73 ms.
ts=2018-12-25 19:49:55;result=@ArrayList[
    @Object[][isEmpty=true;size=0],
    @ArrayList[
        @CatalogVO[CatalogVO(id=59, name=wangjun, location=beijing, time=1537256454000, description=desccc)],
    ],
]
# 可以看到入?yún)⑹强盏模鰠⑹且粋€(gè)list

具體使用請(qǐng)見:https://alibaba.github.io/art...。

3.3 trace命令

trace可以輸出方法內(nèi)部調(diào)用關(guān)系,并打印方法內(nèi)部每個(gè)調(diào)用的耗時(shí)。

# 打印queryCatalog方法內(nèi)每個(gè)調(diào)用的耗時(shí)
$ trace com.timeline.services.CatalogService queryCatalog
Press Ctrl+C to abort.
Affect(class-cnt:1 , method-cnt:1) cost in 101 ms.
`---ts=2018-12-25 20:00:25;thread_name=http-nio-8080-exec-8;id=1b;is_daemon=true;priority=5;TCCL=org.apache.catalina.loader.ParallelWebappClassLoader@4d1110a3
    `---[2.896979ms] com.timeline.services.CatalogService:queryCatalog()
        +---[2.605774ms] com.timeline.dao.CatalogDao:queryCatalog()
        +---[0.0048ms] java.util.ArrayList:()
        +---[min=0.001154ms,max=0.00634ms,total=0.007494ms,count=2] java.util.List:size()
        +---[0.004428ms] java.util.List:get()
        +---[0.005115ms] com.timeline.entity.Catalog:getId()
        +---[0.003107ms] com.timeline.entity.Catalog:getName()
        +---[0.0026ms] com.timeline.entity.Catalog:getLocation()
        +---[0.002573ms] com.timeline.entity.Catalog:getTime()
        +---[0.005901ms] com.timeline.common.Utils:timestamp2Long()
        +---[0.002543ms] com.timeline.entity.Catalog:getDescription()
        +---[0.005133ms] com.timeline.vo.CatalogVO:()
        `---[0.004174ms] java.util.List:add()

具體使用請(qǐng)見:https://alibaba.github.io/art...。

3.4 stack命令

stack可以輸出方法的整個(gè)調(diào)用路徑。

# 打印queryCatalog方法的整個(gè)調(diào)用路徑(不拋出堆棧也能看到調(diào)用鏈啦?。?$ stack com.timeline.services.CatalogService queryCatalog
Press Ctrl+C to abort.
Affect(class-cnt:1 , method-cnt:1) cost in 82 ms.
ts=2018-12-25 20:02:56;thread_name=http-nio-8080-exec-9;id=1c;is_daemon=true;priority=5;TCCL=org.apache.catalina.loader.ParallelWebappClassLoader@4d1110a3
    @com.timeline.controllers.CalalogController.queryCatalog()
        at sun.reflect.GeneratedMethodAccessor46.invoke(null:-1)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
        

具體使用請(qǐng)見:https://alibaba.github.io/art...。

3.5 tt命令

記錄方法每次的調(diào)用出入?yún)⒑彤惓P畔?,并且完整保留調(diào)用現(xiàn)場(chǎng),可以再次模擬調(diào)用。

# 記錄每次調(diào)用queryCatalog的情況,可以根據(jù)其他命令打印出入餐和復(fù)現(xiàn)現(xiàn)場(chǎng)
$ tt -t com.timeline.services.CatalogService queryCatalog
Press Ctrl+C to abort.
Affect(class-cnt:1 , method-cnt:1) cost in 128 ms.


 INDEX       TIMESTAMP                    COST(ms)      IS-RET      IS-EXP     OBJECT                CLASS                                       METHOD                                    
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 1008        2018-12-25 20:04:46          4.747987      true        false      0x2577a8a4            CatalogService                              queryCatalog                              
 1009        2018-12-25 20:04:47          2.270835      true        false      0x2577a8a4            CatalogService                              queryCatalog                              
 1010        2018-12-25 20:04:47          1.434482      true        false      0x2577a8a4            CatalogService                              queryCatalog                              
 1011        2018-12-25 20:04:48          1.82891       true        false      0x2577a8a4            CatalogService                              queryCatalog                              
 1012        2018-12-25 20:04:49          2.27361       true        false      0x2577a8a4            CatalogService                              queryCatalog

具體使用請(qǐng)見:https://alibaba.github.io/art...。

當(dāng)然除此之外還有很豐富的其他功能,比如JVM,ClassLoader相關(guān)的命令。

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/72180.html

相關(guān)文章

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

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

    Rango 評(píng)論0 收藏0
  • 愛上Java診斷利器之Arthas

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

    Hancock_Xu 評(píng)論0 收藏0
  • 阿里在線診斷工具Arthas調(diào)整日志等級(jí)記錄

    摘要:阿里的開源診斷工具可以在線調(diào)整等級(jí)查找當(dāng)前類的用獲取單獨(dú)設(shè)置的全局設(shè)置 阿里的開源Java診斷工具Arthas可以在線調(diào)整log等級(jí) 查找當(dāng)前類的classloader hashcode sc -d com.example.demo.arthas.user.UserController | grep classLoaderHash 用OGNL獲取logger ognl -c 1be6f...

    lansheng228 評(píng)論0 收藏0
  • Arthas使用指南

    摘要:注意這個(gè)統(tǒng)計(jì)也會(huì)產(chǎn)生一定的開銷這個(gè)接口本身開銷比較大,因此會(huì)看到的線程占用一定的百分比,為了降低統(tǒng)計(jì)自身的開銷帶來(lái)的影響,可以把采樣間隔拉長(zhǎng)一些,比如毫秒。 Arthas 能為你做什么? 這個(gè)類從哪個(gè) jar 包加載的?為什么會(huì)報(bào)各種類相關(guān)的 Exception? 我改的代碼為什么沒(méi)有執(zhí)行到?難道是我沒(méi) commit?分支搞錯(cuò)了? 遇到問(wèn)題無(wú)法在預(yù)發(fā) debug 一下,難道只能通過(guò)加...

    darkerXi 評(píng)論0 收藏0
  • 使用Arthas 獲取Spring ApplicationContext還原問(wèn)題現(xiàn)場(chǎng)

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

    xeblog 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<