91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java軟件生產監控工具Btrace有什么用

發布時間:2020-07-07 14:20:49 來源:億速云 閱讀:164 作者:清晨 欄目:開發技術

小編給大家分享一下Java軟件生產監控工具Btrace有什么用,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

Btrace

BTrace是sun公司推出的一款Java 動態、安全追蹤(監控)工具,可以在不用重啟的情況下監控系統運行情況,方便的獲取程序運行時的數據信息,如方法參數、返回值、全局變量和堆棧信息等,并且做到最少的侵入,占用最少的系統資源。

項目地址:Btrace

用戶指南:UserGuide

Btrace使用

在Release頁面里下載最新Zip版,解壓就能用

tar -zxvf btrace-bin-1.3.8.3.tgz
export JAVA_HOME=/opt/taobao/java
export PATH=$JAVA_HOME/bin:$PATH

./bin/btrace -cp /home/admin/projectname/target/projectname/BOOT-INF/classes 2016 SlowCall.java
./bin/btrace -cp /home/admin/projectname/target/projectname.war/WEB-INF/classes:/home/admin/projectname/target/projectname.war/WEB-INF/lib/projectname-1.0-SNAPSHOT.jar 71419 BtraceTest.java > NT12.txt

由于Btrace會把腳本邏輯直接侵入到運行的代碼中,所以在使用上做很多限制:

1、不能創建對象

2、不能使用數組

3、不能拋出或捕獲異常

4、不能使用循環

5、不能使用synchronized關鍵字

6、屬性和方法必須使用static修飾

根據官方聲明,不恰當的使用BTrace可能導致JVM崩潰,如在BTrace腳本使用錯誤的class文件,所以在上生產環境之前,務必在本地充分的驗證腳本的正確性。

Btrace可以做什么?

1、接口性能變慢,分析每個方法的耗時情況;

2、當在Map中插入大量數據,分析其擴容情況;

3、分析哪個方法調用了System.gc(),調用棧如何;

4、執行某個方法拋出異常時,分析運行時參數;

5、....

Btrace第一個例子

package com.metty.rpc.common;
import java.util.Random;

public class BtraceCase {
  public static Random random = new Random();
  public int size;

  public static void main(String[] args) throws Exception {
    new BtraceCase().run();
  }
  
  public void run() throws Exception {
    while (true) {
      add(random.nextInt(10), random.nextInt(10));
    }
  }

  public int add(int a, int b) throws Exception {
    Thread.sleep(random.nextInt(10) * 100);
    return a + b;
  }
}

執行add方法時,對傳入參數、返回值以及執行耗時進行分析,btrace腳本:

Java軟件生產監控工具Btrace有什么用

通過jps命令獲取pid為8454

執行btrace 8454 Debug.java實現對運行代碼的監控,輸出結果如下:

Java軟件生產監控工具Btrace有什么用

可以發現,Btrace可以獲取每次執行add方法時的數據,當然Btrace能做的遠遠不止這些,比如獲取當前jvm堆使用情況、當前線程的執行棧等等。

參數說明

@OnMethod

Btrace使用@OnMethod注解定義需要分析的方法入口

Java軟件生產監控工具Btrace有什么用

在@OnMethod注解中,需要指定class、method以及location等,class表明需要監控的類,method表明需要監控的方法,指定方式如下:

1、使用全限定名:clazz="com.metty.rpc.common.BtraceCase", method="add"

2、使用正則表達式:clazz="/javax\\.swing\\..*/", method="/.*/"

3、使用接口:clazz="+com.ctrip.demo.Filter", method="doFilter"

4、使用注解:clazz="@javax.jws.WebService", method=""@javax.jws.WebMethod"

5、如果需要分析構造方法,需要指定method="<init>"

@Location

定義Btrace對方法的攔截位置,通過@Location注解指定,默認為Kind.ENTRY

1、Kind.ENTRY:在進入方法時,調用Btrace腳本

2、Kind.RETURN:方法執行完時,調用Btrace腳本,只有把攔截位置定義為Kind.RETURN,才能獲取方法的返回結果@Return和執行時間@Duration

Java軟件生產監控工具Btrace有什么用

3、Kind.CALL:分析方法中調用其它方法的執行情況,比如在execute方法中,想獲取add方法的執行耗時,必須把where設置成Where.AFTER

Java軟件生產監控工具Btrace有什么用

4、Kind.LINE:通過設置line,可以監控代碼是否執行到指定的位置

Java軟件生產監控工具Btrace有什么用

5、Kind.ERROR, Kind.THROW, Kind.CATCH

用于對某些異常情況的跟蹤,包括異常拋出,異常被捕獲,異常未捕獲被拋出方法之外

如何使用Btrace定位問題
1、找出所有耗時超過1ms的過濾器Filter

Java軟件生產監控工具Btrace有什么用

由于@Dutation返回的時間是納秒級別,需要進行轉換,如果定位一個Filter性能變慢,接著使用@Location(Kind.CALL)進行更細粒度的分析。

2、分析哪個方法調用了System.gc(),調用棧如何?

Java軟件生產監控工具Btrace有什么用

通過查看調用棧,可以很清楚的發現哪個類哪個方法調用了System.gc()

3、統計方法的調用次數,且每隔1分鐘打印調用次數

Java軟件生產監控工具Btrace有什么用

Btrace的@OnTimer注解可以實現定時執行腳本中的一個方法

4、方法執行時,查看對象的實例屬性值

Java軟件生產監控工具Btrace有什么用

通過反射機制,可以很方法的得到當前實例的屬性值

Btrace能做的事情太多,但使用之前切記檢查腳本的可行性,一旦Btrace腳本侵入到系統中,只有通過重啟才能恢復。

看完了這篇文章,相信你對Java軟件生產監控工具Btrace有什么用有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宣汉县| 红安县| 定西市| 和田市| 山阳县| 孟连| 获嘉县| 潜山县| 微山县| 漳州市| 扶风县| 多伦县| 阳城县| 呼玛县| 永定县| 谢通门县| 西平县| 马尔康县| 洛阳市| 永宁县| 彰化市| 阿拉善右旗| 南部县| 五华县| 漳浦县| 梅河口市| 曲沃县| 龙泉市| 瑞安市| 九江市| 文水县| 洱源县| 丘北县| 余庆县| 黎平县| 宁晋县| 高尔夫| 治县。| 宁陕县| 安岳县| 武汉市|