最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一款不可錯過的Java應(yīng)用診斷利器Arthas

 更新時間:2023年06月15日 08:25:42   作者:Cosolar  
Arthas是一款由阿里巴巴開源的Java應(yīng)用診斷利器,它可以幫助開發(fā)人員在運行時對Java應(yīng)用進行調(diào)試和診斷,解決線上問題,本文將簡單的描述一下該工具的用法和常用命令,以勾起大家對此工具應(yīng)用的興趣

一、Arthas的介紹

Arthas是一款基于Java的命令行工具,可以在運行時對Java應(yīng)用進行調(diào)試和診斷,其主要功能包括:實時查看JVM狀態(tài)、方法調(diào)用鏈路追蹤、監(jiān)控系統(tǒng)資源消耗、動態(tài)修改代碼等。

同時Arthas也是阿里巴巴開源的Java診斷工具,集成了較多的功能,包括進程狀態(tài)查看、Java類、方法的查找和監(jiān)控、異常信息分析、線程狀態(tài)監(jiān)控、JVM統(tǒng)計信息查看等。相比其他Java診斷工具,Arthas有以下幾個優(yōu)點:

  • 操作簡單:只需要在目標(biāo)機上執(zhí)行一個腳本即可。
  • 功能強大:支持從線上診斷到本地診斷場景,并且能夠解決大部分日常開發(fā)遇到的問題。
  • 方便快捷:可以動態(tài)修改代碼,方便調(diào)試。
  • 支持多種使用方式:命令行使用方式、WebUI使用方式、telnet響應(yīng)式命令行交互使用方式。
  • 針對Java應(yīng)用的特征進行優(yōu)化,包括注重性能、穩(wěn)定性、安全性。
  • 多年在線大規(guī)模使用證明了Arthas的高性能、低影響性和實用性。

Arthas的安裝非常簡單,只需要通過Maven將其依賴添加到項目中即可:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>arthas-client</artifactId>
    <version>3.5.4</version>
</dependency>

二、Arthas的使用

1. 進入Arthas Shell

在使用Arthas之前,我們需要先進入Arthas Shell。可以通過以下命令進入:

./as.sh

出現(xiàn)如下界面即表示成功進入Arthas Shell:

$ as.sh
  / \  _   _ _ __ (_) ___| |__   ___ _ __ ___
 / _ \| | | | '_ \| |/ __| '_ \ / _ \ '__/ __|
/ ___ \ |_| | | | | | (__| | | |  __/ |  \__ \
\/   \/\__,_|_| |_|_|\___|_| |_|\___|_|  |___/
Welcome to Arthas, enjoy it. More info please visit: https://alibaba.github.io/arthas
$ _

2. 查看JVM狀態(tài)

在Arthas Shell中,我們可以通過以下命令查看當(dāng)前JVM的狀態(tài):

$ jvm

執(zhí)行以上命令后,會輸出類似于以下的信息:

[INFO] [arthas-jvm] [0.140s] [pid:5102] [user:binjie] [hostname:localhost.localdomain] [cwd:/home/binjie] [command:/usr/lib/jvm/java-8-oracle/bin/java -jar /home/binjie/demo/target/demo-1.0-SNAPSHOT.jar] [args:] [state:RUNNING] [os:Linux 4.18.0-147.5.1.el8_1.x86_64 amd64] [Java home:/usr/lib/jvm/java-8-oracle]

其中,我們可以看到當(dāng)前JVM的進程ID、用戶、主機等信息。

3. 方法調(diào)用鏈路追蹤

有時我們需要查看某個方法被調(diào)用了多少次、被哪些方法調(diào)用了,甚至是每一次調(diào)用的參數(shù)和返回值。這時可以使用Arthas的trace命令。以下是一些常用的示例:

(1)追蹤某個方法的所有調(diào)用

$ trace com.example.demo.service.UserService getUserById

這條命令將會追蹤com.example.demo.service.UserService類中的getUserById方法的所有調(diào)用。

(2)追蹤某個類中所有方法的調(diào)用

$ trace com.example.demo.service.UserService

這條命令將會追蹤com.example.demo.service.UserService類中的所有方法調(diào)用。

(3)追蹤某個方法的詳細信息

$ trace com.example.demo.service.UserService getUserById -n 5

這條命令將會追蹤com.example.demo.service.UserService類中的getUserById方法的前5次調(diào)用,并打印出每次調(diào)用的參數(shù)和返回值。

4. 監(jiān)控系統(tǒng)資源消耗

在Arthas Shell中,我們可以通過以下命令監(jiān)控系統(tǒng)資源的消耗情況:

(1)監(jiān)控CPU占用率

$ dashboard

執(zhí)行以上命令后,會輸出一個監(jiān)控面板,其中包含了CPU占用率、Java線程數(shù)、內(nèi)存使用情況等信息。

(2)監(jiān)控線程

$ thread

執(zhí)行以上命令后,會輸出當(dāng)前JVM中所有線程的信息。

(3)監(jiān)控GC

$ gc

執(zhí)行以上命令后,會輸出GC的相關(guān)信息。

5. 動態(tài)修改代碼

Arthas還支持在運行時動態(tài)修改代碼,以下是一些常用的示例:

(1)修改某個類的某個方法的返回值

$ redefine com.example.demo.service.UserService getUserById "return \"Hello Arthas!\";"

這條命令將會修改com.example.demo.service.UserService類中的getUserById方法的返回值為"Hello Arthas!"。

(2)添加某個類的某個方法

$ redefine -c com.example.demo.service.UserService -m addUser --params-string "java.lang.String name, java.lang.Integer age" "logger.info(\"addUser invoked! name:{} age:{}\", name, age); return true;"

這條命令將會在com.example.demo.service.UserService類中添加一個名為addUser的方法,并且該方法的參數(shù)為String nameInteger age,最后將會輸出日志并返回true。

6. 其他常用命令

除了以上的命令之外,Arthas還有許多其他的實用命令,以下列舉一些常用的:

(1)查看方法調(diào)用次數(shù)

$ sc -d 3 com.example.demo.service.UserService getUserById

這條命令將會查看com.example.demo.service.UserService類中的getUserById方法在最近的3秒鐘內(nèi)被調(diào)用的次數(shù)。

(2)查看線程堆棧

$ thread -i [線程ID]

這條命令將會輸出指定ID的線程的堆棧信息。

(3)查看類的加載情況

$ classloader -c com.example.demo.service.UserService

這條命令將會查看com.example.demo.service.UserService類的加載情況。

三、 連接應(yīng)用

使用 Arthas 前需要先連接到相應(yīng)的 Java 應(yīng)用程序,Arthas 支持兩種連接方式:默認(rèn)連接和 Telnet 連接。

1. 默認(rèn)連接

默認(rèn)連接是指 Arthas 自動連接當(dāng)前機器上正在運行的 Java 應(yīng)用程序。可以通過以下命令啟動默認(rèn)連接:

$ java -jar arthas-boot.jar

啟動后會自動連接當(dāng)前機器上正在運行的 Java 應(yīng)用程序。

$ java -jar arthas-boot.jar --target-ip 127.0.0.1 --telnet-port 3658

啟動后會嘗試連接指定的 IP 地址和端口號上的 Java 應(yīng)用程序。

2. Telnet 連接

Telnet 連接是指通過 Telnet 協(xié)議連接到 Java 應(yīng)用程序??梢酝ㄟ^以下命令啟動 Telnet 連接:

$ telnet 127.0.0.1 3658

連接成功后可以輸入 help 命令查看 Arthas 的幫助信息。

四、小結(jié)一下

Arthas就像是Java應(yīng)用程序的救世主,它會讓你在調(diào)試過程中不再感到“糾結(jié)”和“郁悶”,而是變成“順風(fēng)順?biāo)?rdquo;和“樂在其中”。使用Arthas,你可以輕松地查看JVM信息、調(diào)用鏈追蹤、方法監(jiān)控等等,就像使用神奇的魔棒一樣。使得你在調(diào)試過程中可以開開心心地喝著茶、說著笑話,并且在芝士多多的群里大顯身手,展現(xiàn)你的技術(shù)實力和幽默感。Arthas就是你成功找到Bug的必備良藥,讓我們一起來擁抱這個優(yōu)秀的工具吧!

以上就是一款不可錯過的Java應(yīng)用診斷利器Arthas的詳細內(nèi)容,更多關(guān)于Java應(yīng)用診斷利器Arthas的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • activiti獲取流程圖實例

    activiti獲取流程圖實例

    這篇文章主要介紹了activiti獲取流程圖的方法,需要的朋友可以參考下
    2014-08-08
  • Java接收text/event-stream格式數(shù)據(jù)的詳細代碼

    Java接收text/event-stream格式數(shù)據(jù)的詳細代碼

    這篇文章主要介紹了java接收text/event-stream格式數(shù)據(jù),本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • SpringMVC攔截器配置及運行流程解析

    SpringMVC攔截器配置及運行流程解析

    這篇文章主要介紹了SpringMVC攔截器配置及運行流程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • 詳談Java中instanceof和isInstance的區(qū)別

    詳談Java中instanceof和isInstance的區(qū)別

    下面小編就為大家?guī)硪黄斦凧ava中instanceof和isInstance的區(qū)別。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • SpringBoot項目中讀取resource目錄下的文件六種方法

    SpringBoot項目中讀取resource目錄下的文件六種方法

    這篇文章給大家總結(jié)了SpringBoot項目中讀取resource目錄下的文件六種方法,文中有詳細的代碼示例供大家參考,具有一定的參考價值,需要的朋友可以參考下
    2024-05-05
  • Java利用Hutool-Script封裝JS腳本執(zhí)行

    Java利用Hutool-Script封裝JS腳本執(zhí)行

    在?Java?開發(fā)中,有時需要動態(tài)執(zhí)行腳本代碼,比如?JavaScript?腳本,來實現(xiàn)一些靈活的業(yè)務(wù)邏輯,下面我們就來看看如何利用Hutool-Script模塊對Java的腳本執(zhí)行功能進行封裝吧
    2025-02-02
  • java arrayList遍歷的四種方法及Java中ArrayList類的用法

    java arrayList遍歷的四種方法及Java中ArrayList類的用法

    arraylist是動態(tài)數(shù)組,它具有三個好處分別是:動態(tài)的增加和減少元素 、實現(xiàn)了ICollection和IList接口、靈活的設(shè)置數(shù)組的大小,本文給大家介紹java arraylist遍歷及Java arraylist 用法,感興趣的朋友一起學(xué)習(xí)吧
    2015-11-11
  • Spring Security Oauth2.0 實現(xiàn)短信驗證碼登錄示例

    Spring Security Oauth2.0 實現(xiàn)短信驗證碼登錄示例

    本篇文章主要介紹了Spring Security Oauth2.0 實現(xiàn)短信驗證碼登錄示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Java集合框架源碼分析之LinkedHashMap詳解

    Java集合框架源碼分析之LinkedHashMap詳解

    這篇文章主要介紹了Java集合框架源碼分析之LinkedHashMap詳解,內(nèi)容包括了linkedhashmap的簡介和源碼剖析以及關(guān)于LinkedHashMap的源碼總結(jié),內(nèi)容豐富,需要的朋友可以參考下。
    2017-09-09
  • 教你Spring Cloud保證各個微服務(wù)之間調(diào)用安全性

    教你Spring Cloud保證各個微服務(wù)之間調(diào)用安全性

    在微服務(wù)的架構(gòu)下,系統(tǒng)會根據(jù)業(yè)務(wù)拆分為多個服務(wù),各自負(fù)責(zé)單一的職責(zé),在這樣的架構(gòu)下,我們需要確保各api的安全性,今天通過本文給大家分享Spring Cloud中如何保證各個微服務(wù)之間調(diào)用的安全性,需要的朋友參考下吧
    2021-08-08

最新評論

白朗县| 娱乐| 兴国县| 安阳县| 四川省| 沙湾县| 罗城| 永济市| 长葛市| 呼和浩特市| 通江县| 永嘉县| 云梦县| 洪洞县| 开鲁县| 卓尼县| 陆丰市| 龙陵县| 淮阳县| 昂仁县| 亳州市| 房产| 东乌珠穆沁旗| 睢宁县| 于都县| 汉寿县| 台中市| 循化| 定安县| 库车县| 长岭县| 丰宁| 汤原县| 宝鸡市| 孟州市| 岳普湖县| 柳林县| 芜湖县| 渭源县| 枣阳市| 安岳县|