arthas命令tt方法時空隧道


arthas是一個Java開源診斷神器。

今天分享一個非常重要的命令tt,全稱是TimeTunnel,記錄下指定方法每次調用的入參和返回信息,並能對這些不同的時間下調用進行觀測。這個命令與之前講到的arthas命令watch觀察方法調用(上)arthas命令watch觀察方法調用(下)從大概功能上比較相似,區別在於watch如果想發揮足夠的排查作用,必需熟練掌握ognl語法,特別是高級語法這樣才能從大量的請求中篩選出來自己想要的,tt命令相對簡單,而且還支持錄制、重放功能,可以說非常強大。在arthas運行的過程中,經過tt命令保存的方法都是可以重放的。

字段說明

表格字段 字段解釋
INDEX 時間片段記錄編號
TIMESTAMP 方法執行的本機時間
COST(ms) 方法執行的耗時
IS-RET 方法是否以正常返回的形式結束
IS-EXP 方法是否以拋異常的形式結束
OBJECT 執行對象的hashCode()
CLASS 執行的類名
METHOD 執行的方法名
  • 這里有個問題視頻中未講明白,hashcode()方法得到的是對象在JVM中內存地址的映射。

arthas命令tt方法時空隧道

Demo代碼

package com.fun;


import com.alibaba.fastjson.JSONObject;
import com.fun.frame.httpclient.FanLibrary;
import org.apache.http.client.methods.HttpGet;

import java.util.Arrays;
import java.util.List;

public class AR extends FanLibrary {

    public static int times = 0;

    public static void main(String[] args) {

        while (true) {
            String url = "https://api.apiopen.top/getAllUrl";
            HttpGet get = getHttpGet(url);
            JSONObject response = getHttpResponse(get);
//            output(response);
            output(test());
            sleep(5000);
        }

    }

    static String test() {
        times++;
        for (int i = 0; i < 5; i++) {
            getRandomInt(100);
        }
        List list = Arrays.asList(32, 432, 432, 423, 423, 32);
        list.stream().forEach(x -> aaa(x));
        return DEFAULT_STRING + times;
    }

    static Integer aaa(Object a) {
        sleep(100);
        return 915 * 516;
    }


}

  • 鄭重聲明:“FunTester”首發,歡迎關注交流,禁止第三方轉載。更多原創文章:FunTester十八張原創專輯,合作請聯系Fhaohaizi@163.com

熱文精選


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM