小景的工具使用--Java診斷工具Arthas的使用說明

来源:https://www.cnblogs.com/ailanlan/archive/2023/10/23/17781933.html
-Advertisement-
Play Games

小景最近在做程式和資料庫的壓測工作,期間監控壓測數據,分析程式原因變成了一個待解決的問題,根據公司小伙伴的建議,接觸了阿爾薩斯這個診斷工具,下麵小景分別基於Linux操作系統和Windows操作系統,來詳細的說下使用說明和使用心得。 Arthas(阿爾薩斯)是一個用於診斷Java應用程式的開源工具, ...


小景最近在做程式和資料庫的壓測工作,期間監控壓測數據,分析程式原因變成了一個待解決的問題,根據公司小伙伴的建議,接觸了阿爾薩斯這個診斷工具,下麵小景分別基於Linux操作系統和Windows操作系統,來詳細的說下使用說明和使用心得。

 

Arthas(阿爾薩斯)是一個用於診斷Java應用程式的開源工具,它是一種命令行工具,用於實時分析和調試Java應用程式的運行時行為。它提供了豐富的功能,可以幫助開發人員診斷和解決各種Java應用程式中的性能問題和故障。

基於Linux系統,以下是Arthas的詳細使用方式:

    1. 安裝Arthas: 首先,您需要安裝Arthas。您可以從官方網站 https://alibaba.github.io/arthas/ 下載Arthas的最新版本。下載後,將其解壓縮到您選擇的目錄中。

    2. 啟動Arthas: 進入Arthas的安裝目錄,運行以下命令來啟動Arthas:

      ./as.sh或者./as.bat

      這將啟動Arthas的命令行界面。

    3. 選擇目標應用程式: 在Arthas命令行界面中,您需要選擇要診斷的目標Java應用程式。可以使用以下命令列出正在運行的Java應用程式:

      ps

      然後使用-t選項選擇目標應用程式,例如:

      -t 12345

      其中,12345是目標應用程式的PID。

    4. 使用命令進行分析和調試: 一旦選擇了目標應用程式,您可以使用各種Arthas命令來進行分析和調試。例如,您可以使用以下命令來查看Java類的方法調用棧:

      jad java.lang.String

      或者,您可以使用以下命令來監視方法的調用和響應時間:

      watch com.example.MyClass myMethod '{params,returnObj,throwExp}' -n 3

      這將監視com.example.MyClass中的myMethod方法,併在每次調用時顯示參數、返回值和異常信息,最多顯示3次。

      • 以下是一些常見的Arthas命令和其詳細用法:

        1. help命令: 使用 help 命令可以查看Arthas的幫助文檔,列出可用的命令和功能。

          help
        2. dashboard命令: dashboard 命令可以顯示儀錶板,提供了有關Java應用程式的實時信息,包括線程、堆記憶體、類載入等。

          dashboard
        3. thread命令: 使用 thread 命令可以查看Java線程的信息,包括線程堆棧和線程狀態。

          thread
        4. jvm命令: jvm 命令允許您查看Java虛擬機的信息,如記憶體使用情況、垃圾回收統計等。

          jvm
        5. trace命令: trace 命令用於跟蹤方法的執行,可以用於監視特定方法的輸入、輸出和執行時間。

          trace com.example.MyClass myMethod
        6. watch命令: watch 命令用於監視方法的調用和返回值。您可以監視特定方法,並查看參數、返回值和異常信息。

          watch com.example.MyClass myMethod '{params,returnObj,throwExp}'
        7. jad命令: jad 命令用於反編譯Java類文件,以查看類的源代碼。

          jad com.example.MyClass
        8. sc命令: sc 命令用於查看類載入情況,包括已載入的類、未載入的類和類載入器信息。

          sc -d com.example.MyClass
        9. monitor命令: monitor 命令用於監視方法的執行情況,包括執行時間、調用次數等。

          monitor com.example.MyClass myMethod
        10. heapdump命令: heapdump 命令用於生成堆轉儲文件,以便進行記憶體分析。

          heapdump /path/to/dump.hprof
    5. 退出Arthas: 要退出Arthas,可以使用quit命令。

以上只是Arthas功能的一個小demo,它還具有許多其他功能,如查看類載入情況、查看線程堆棧、分析性能問題等。您可以查看官方文檔以深入瞭解更多信息。Arthas是一個強大的工具,可幫助您快速診斷和解決Java應用程式中的問題。

 

基於Windows系統,以下是Arthas的詳細使用方式:

    1. 下載和安裝Arthas:

      1. 訪問Arthas的官方網站:https://alibaba.github.io/arthas/,並下載最新版本的Arthas。

      2. 解壓縮下載的Arthas壓縮包到您的系統中。為了簡化操作,您可以將Arthas解壓到C:\arthas目錄。

    2. 打開命令行界面:

      1. 在Windows系統中,您可以使用命令提示符(Command Prompt)或PowerShell。打開一個新的命令行界面視窗。
    3. 啟動Arthas:

      1. 切換到您的Arthas安裝目錄。在命令行中,使用以下命令:

        cd C:\arthas
      2. 然後,運行 as.bat 腳本來啟動Arthas:

        as.bat

      這將啟動Arthas的命令行界面。

    4. 選擇目標Java應用程式:

      1. 在Arthas的命令行界面中,使用 ps 命令來列出正在運行的Java應用程式,以查找您想要診斷和調試的應用程式。例如:

        ps
      2. 從列表中選擇您的目標Java應用程式,並記錄其PID(進程ID)。

    5. 連接到目標應用程式:

      1. 使用 -t 選項連接到目標Java應用程式,將 <PID> 替換為您在步驟4中獲得的目標應用程式的PID:

        -t <PID>

      例如,如果您的目標應用程式的PID是12345,可以使用以下命令連接到它:

      -t 12345
    6. 使用Arthas命令進行診斷和調試:

      1. 一旦連接到目標應用程式,您可以使用各種Arthas命令來獲取關於應用程式的實時信息,進行分析和調試。以下是一些示例命令:

        1. 使用 dashboard 命令查看應用程式的儀錶板:

          dashboard
        2. 使用 thread 命令查看線程信息:

          thread
        3. 使用 jvm 命令查看Java虛擬機信息:

          jvm
        4. 使用 trace 命令跟蹤方法的執行:

          trace com.example.MyClass myMethod
        5. 使用 watch 命令監視方法的調用和返回值:

          watch com.example.MyClass myMethod '{params,returnObj,throwExp}'
      2. 根據您的需求,使用適當的Arthas命令進行診斷和調試。

    7. 退出Arthas:

      1. 要退出Arthas,您可以在Arthas命令行界面中使用 quit 命令。

在Windows系統上,確保您具有足夠的許可權來連接到目標Java應用程式,並根據需要處理特殊字元的轉義。

最後,再來說下Arthas的拓展和延申:

 

以下是更詳細的方式來拓展和延伸Arthas的功能:

  1. 自定義命令:

    Arthas允許您創建自定義命令,這些命令可以用於執行特定的診斷或調試任務。您可以編寫自定義命令的插件,以擴展Arthas的功能。這些自定義命令可以是Groovy腳本,以實現各種自定義操作。創建自定義命令的一般步驟如下:

    • 編寫Groovy腳本,其中包含自定義操作。
    • 將腳本放置在Arthas的自定義命令目錄下,通常是~/.arthas/commands(Linux/macOS)或%USERPROFILE%\.arthas\commands(Windows)。
    • 在Arthas中使用自定義命令名稱來調用您的腳本。

    這使您能夠根據具體需求創建自定義命令,以執行特定的分析或調試任務。

  2. 使用Arthas插件系統:

    Arthas具有插件系統,您可以使用該系統編寫自定義插件來擴展Arthas的功能。插件可以包括自定義命令、自定義函數、拓展性能監控等等。創建Arthas插件的一般步驟如下:

    • 編寫Groovy腳本或Java代碼,實現自定義插件功能。
    • 將插件打包為JAR文件。
    • 將JAR文件放置在Arthas的插件目錄下,通常是~/.arthas/lib(Linux/macOS)或%USERPROFILE%\.arthas\lib(Windows)。
    • 在Arthas中使用插件的功能。

    插件系統使您能夠將自定義功能完全集成到Arthas中,以執行高度定製的任務。

  3. 腳本和動態載入:

    Arthas支持通過Groovy腳本進行自定義操作,您可以在運行時載入和執行這些腳本。這使您可以在不重啟目標應用程式的情況下靈活地執行自定義代碼。例如,您可以使用Groovy腳本來執行動態的方法跟蹤、日誌記錄或性能監控。

  4. 使用Arthas API:

    Arthas提供了Java API,您可以在Java應用程式中集成Arthas,以通過編程方式執行診斷和調試任務。這使得您可以構建自定義工具或集成Arthas的功能到現有的應用程式中。Arthas的API包括ArthasCoreAdviceListener等類,可用於動態診斷和調試Java應用程式。

  5. 結合AOP(面向切麵編程):

    您可以使用Arthas的AOP功能來實現方法級別的攔截和切麵編程。通過AOP,您可以監控、記錄和修改方法的行為,以適應特定需求。AOP可用於性能分析、安全性檢查、日誌記錄等任務。

  6. 遠程擴展和監控:

    您可以將Arthas與遠程監控工具結合使用,以實現分散式應用程式的診斷和性能監控。這包括將Arthas與ELK堆棧(Elasticsearch、Logstash、Kibana)或Prometheus/Grafana等工具集成,以實現實時監控和日誌分析。

  7. 社區和第三方插件:

    在Arthas社區和第三方開發者的支持下,可能會有許多現成的插件和擴展可供使用。您可以查找和使用這些插件,以簡化和加速特定任務的執行。

 

最後,希望小景的這篇文章可以幫助您解決實際工作中的問題,有什麼問題可以評論區或者關註我的微信公眾號來交流。

 

知無不言,言無不盡。

本文來自博客園,作者:慵懶的小景,轉載請註明原文鏈接:https://www.cnblogs.com/ailanlan/p/17781933.html

否則會進行維權,謝謝合作。
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 網上搜索類似的文章有很多,但是一味的複製粘貼總會出現各種奇葩問題,最後然並卵!今天特意自己研究琢磨一下,將最終結果分享給大家,100%親測可用。 ...
  • 來源:https://juejin.cn/post/6844904024332828685 寫在前面 通過閱讀本篇文章你將瞭解到: CompletableFuture的使用 CompletableFure非同步和同步的性能測試 已經有了Future為什麼仍需要在JDK1.8中引入Completable ...
  • List 是 Python 中常用的數據類型,它一個有序集合,即其中的元素始終保持著初始時的定義的順序(除非你對它們進行排序或其他修改操作)。 在Python中,向List添加元素,方法有如下4種方法(append(),extend(),insert(), +加號) 1. append() 追加單個 ...
  • 方式一:使用切片 [:] 列表 # 淺拷貝 [:] old_list = [1, 2, [3, 4]] new_list = old_list[:] old_list.append(5) old_list[2][0] += 97 print("Old list:", old_list, "old l ...
  • 在Word文檔中,可以添加半透明的圖形或文字作為水印,以保護文檔的原創性,防止未經授權的複製或使用。除了提供安全功能外,水印還可以展示文檔創作者的信息、附加的文檔信息,或者僅用於文檔的裝飾。本文將介紹如何使用Spire.Doc for Python在程式中的輕鬆添加文字和圖像水印到Word文檔。 引 ...
  • 本文深入探討了Go語言中代碼斷行的各個方面,從基礎概念到實際應用實踐。 關註【TechLeadCloud】,分享互聯網架構、雲服務技術的全維度知識。作者擁有10+年互聯網服務架構、AI產品研發經驗、團隊管理經驗,同濟本復旦碩,復旦機器人智能實驗室成員,阿裡雲認證的資深架構師,項目管理專業人士,上億營 ...
  • 自定義MyBatis攔截器可以在方法執行前後插入自己的邏輯,這非常有利於擴展和定製 MyBatis 的功能。本篇文章實現自定義一個攔截器去改變要插入或者查詢的數據源。 ...
  • 日常開發中接到這樣的需求,上游系統請求獲取一張A4單據用於倉庫列印及展示,要求PNG圖片格式,但是我們內部得到的單據格式為PDF,需要提取PDF文檔的元素並生成一張PNG圖片。目前已經有不少開源工具實現了這一功能,我們找了網上使用比較多的Apache PDFBox庫來實現功能 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...