国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java診斷工具Arthas

happyfish / 3003人閱讀

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

Java診斷工具Arthas 1. Arthas簡介

Arthas是阿里開源的一個線上java診斷工具,發現阿里還是挺喜歡開源一些技術的,造福人類。昨天試用了一下,發現真是強大,解決了我工作兩年的很多困擾,有點相見恨晚的感覺。

根據官網的說明,它能解決下面的問題:

當你遇到以下類似問題而束手無策時,Arthas可以幫助你解決:

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

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

遇到問題無法在線上 debug,難道只能通過加日志再重新發布嗎?

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

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

有什么辦法可以監控到JVM的實時運行狀態?

Arthas采用命令行交互模式,同時提供豐富的 Tab 自動補全功能,進一步方便進行問題的定位和診斷。

2. Arthas安裝

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

3. Arthas試用

安裝完后試用了它的監控相關的功能,以后調試就不那么麻煩了。

# 進入命令行界面,剛進入的時候會顯示所有的java進程,選擇對應的數字然后回車就可以進入到對應的進程中
./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可以對某個類的某個方法進行周期性監控,來輸出方法的平均響應時間,成功失敗次數,調用次數等。

# 每3秒統計queryCatalog方法的調用次數,成功失敗次數和平均響應時間等。
$ 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%   

具體使用請見:https://alibaba.github.io/art...。

3.2 watch命令

watch可以監控某個方法的出入參,異常信息等。

# 觀察方法的出入參
# -x表示遍歷深度,可以調整來打印具體的參數和結果內容,默認值是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)],
    ],
]
# 可以看到入參是空的,出參是一個list

具體使用請見:https://alibaba.github.io/art...。

3.3 trace命令

trace可以輸出方法內部調用關系,并打印方法內部每個調用的耗時。

# 打印queryCatalog方法內每個調用的耗時
$ 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()

具體使用請見:https://alibaba.github.io/art...。

3.4 stack命令

stack可以輸出方法的整個調用路徑。

# 打印queryCatalog方法的整個調用路徑(不拋出堆棧也能看到調用鏈啦!)
$ 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)
        

具體使用請見:https://alibaba.github.io/art...。

3.5 tt命令

記錄方法每次的調用出入參和異常信息,并且完整保留調用現場,可以再次模擬調用。

# 記錄每次調用queryCatalog的情況,可以根據其他命令打印出入餐和復現現場
$ 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

具體使用請見:https://alibaba.github.io/art...。

當然除此之外還有很豐富的其他功能,比如JVM,ClassLoader相關的命令。

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

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/72180.html

相關文章

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

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

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

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

    Hancock_Xu 評論0 收藏0
  • 阿里在線診斷工具Arthas調整日志等級記錄

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

    lansheng228 評論0 收藏0
  • Arthas使用指南

    摘要:注意這個統計也會產生一定的開銷這個接口本身開銷比較大,因此會看到的線程占用一定的百分比,為了降低統計自身的開銷帶來的影響,可以把采樣間隔拉長一些,比如毫秒。 Arthas 能為你做什么? 這個類從哪個 jar 包加載的?為什么會報各種類相關的 Exception? 我改的代碼為什么沒有執行到?難道是我沒 commit?分支搞錯了? 遇到問題無法在預發 debug 一下,難道只能通過加...

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

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

    xeblog 評論0 收藏0

發表評論

0條評論

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