欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

一、Arthas的介紹

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

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

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

Arthas的安裝非常簡(jiǎn)單,只需要通過(guò)Maven將其依賴添加到項(xiàng)目中即可:

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

二、Arthas的使用

1. 進(jìn)入Arthas Shell

在使用Arthas之前,我們需要先進(jìn)入Arthas Shell。可以通過(guò)以下命令進(jìn)入:

./as.sh

出現(xiàn)如下界面即表示成功進(jì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中,我們可以通過(guò)以下命令查看當(dāng)前JVM的狀態(tài):

$ jvm

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

[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的進(jìn)程ID、用戶、主機(jī)等信息。

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

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

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

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

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

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

$ trace com.example.demo.service.UserService

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

(3)追蹤某個(gè)方法的詳細(xì)信息

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

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

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

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

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

$ dashboard

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

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

$ thread

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

(3)監(jiān)控GC

$ gc

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

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

Arthas還支持在運(yùn)行時(shí)動(dòng)態(tài)修改代碼,以下是一些常用的示例:

(1)修改某個(gè)類(lèi)的某個(gè)方法的返回值

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

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

(2)添加某個(gè)類(lèi)的某個(gè)方法

$ 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;"

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

6. 其他常用命令

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

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

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

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

(2)查看線程堆棧

$ thread -i [線程ID]

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

(3)查看類(lèi)的加載情況

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

這條命令將會(huì)查看com.example.demo.service.UserService類(lèi)的加載情況。

三、 連接應(yīng)用

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

1. 默認(rèn)連接

默認(rèn)連接是指 Arthas 自動(dòng)連接當(dāng)前機(jī)器上正在運(yùn)行的 Java 應(yīng)用程序??梢酝ㄟ^(guò)以下命令啟動(dòng)默認(rèn)連接:

$ java -jar arthas-boot.jar

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

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

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

2. Telnet 連接

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

$ telnet 127.0.0.1 3658

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

四、小結(jié)一下

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

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

相關(guān)文章

  • Java 超詳細(xì)講解hashCode方法

    Java 超詳細(xì)講解hashCode方法

    在 Java 應(yīng)用程序執(zhí)行期間,在同一對(duì)象上多次調(diào)用 hashCode 方法時(shí),必須一致地返回相同的整數(shù),前提是對(duì)象上 equals 比較中所用的信息沒(méi)有被修改。從某一應(yīng)用程序的一次執(zhí)行到同一應(yīng)用程序的另一次執(zhí)行,該整數(shù)無(wú)需保持一致
    2022-04-04
  • 使用Feign配置請(qǐng)求頭以及支持Https協(xié)議

    使用Feign配置請(qǐng)求頭以及支持Https協(xié)議

    這篇文章主要介紹了使用Feign配置請(qǐng)求頭以及支持Https協(xié)議,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • javaweb 國(guó)際化:DateFormat,NumberFormat,MessageFormat,ResourceBundle的使用

    javaweb 國(guó)際化:DateFormat,NumberFormat,MessageFormat,ResourceBu

    本文主要介紹javaWEB國(guó)際化的知識(shí),這里整理了詳細(xì)的資料及實(shí)現(xiàn)代碼,有興趣的小伙伴可以參考下
    2016-09-09
  • Guava本地緩存的使用過(guò)程

    Guava本地緩存的使用過(guò)程

    文章介紹了使用Guava和Redis實(shí)現(xiàn)二級(jí)緩存的原因,以及如何通過(guò)Guava作為一級(jí)緩存,Redis作為二級(jí)緩存來(lái)減少數(shù)據(jù)庫(kù)壓力,提高緩存的可靠性,同時(shí),通過(guò)一個(gè)具體示例說(shuō)明了如何在微服務(wù)場(chǎng)景中使用Guava和Redis進(jìn)行二級(jí)緩存,最后,總結(jié)了Guava的參數(shù)機(jī)制
    2025-01-01
  • java 字符串內(nèi)存分配的分析與總結(jié)(推薦)

    java 字符串內(nèi)存分配的分析與總結(jié)(推薦)

    下面小編就為大家?guī)?lái)一篇java 字符串內(nèi)存分配的分析與總結(jié)(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-08-08
  • IDEA中配置多個(gè)版本的JDK的實(shí)現(xiàn)示例

    IDEA中配置多個(gè)版本的JDK的實(shí)現(xiàn)示例

    IDEA可以配置多個(gè)JDK,根據(jù)需要使用不同版本的,本文就來(lái)介紹一下IDEA中配置多個(gè)版本的JDK的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • Java int與integer的對(duì)比區(qū)別

    Java int與integer的對(duì)比區(qū)別

    這篇文章主要介紹了Java int與integer的對(duì)比區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • SpringBoot實(shí)現(xiàn)MD5加鹽算法的示例代碼

    SpringBoot實(shí)現(xiàn)MD5加鹽算法的示例代碼

    加鹽算法是一種用于增強(qiáng)密碼安全性的技術(shù),本文主要介紹了SpringBoot實(shí)現(xiàn)MD5加鹽算法的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03
  • Java爬蟲(chóng)框架之WebMagic實(shí)戰(zhàn)

    Java爬蟲(chóng)框架之WebMagic實(shí)戰(zhàn)

    這篇文章主要介紹了Java爬蟲(chóng)框架之WebMagic實(shí)戰(zhàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Java深入探究Object類(lèi)的方法

    Java深入探究Object類(lèi)的方法

    java繼承中說(shuō)到的Object類(lèi)是java中一個(gè)特殊的類(lèi),所有的類(lèi)都是直接或者間接的繼承自O(shè)bject類(lèi),即如果某個(gè)類(lèi)沒(méi)有使用extends關(guān)鍵字則默認(rèn)是java.lang.Object類(lèi)的子類(lèi),所以所有的類(lèi)都可以使用Object類(lèi)中定義的方法,下面介紹Object類(lèi)的常用方法
    2022-05-05

最新評(píng)論