arthas命令tt方法时空隧道

码海逐风人
• 阅读 127
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

热文精选

点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
Python—执行系统命令的四种方法(os.system、os.popen、commands、subprocess)
一、os.system方法这个方法是直接调用标准C的system()函数,仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息。os.system(cmd)的返回值。如果执行成功,那么会返回0,表示命令执行成功。否则,则是执行错误。使用os.system返回值是脚本的退出状态码,该方法在调用完shell脚本后
Easter79 Easter79
3年前
sql:mysql:函数:TIMESTAMPDIFF函数实现TimeStamp字段相减,求得时间差
<divclass"htmledit\_views"id"content\_views"<p&nbsp;函数内指定是minute,则最终结果value值的单位是分钟,如果函数内指定为hours,则最终结果value值单位为小时。</p<preclass"has"name"code"<codeclass"hljssql"<
虾米大王 虾米大王
3年前
java代码092
code092.jsp通过FindServlet类查询分页数据所有图书信息ID图书名称价格数量作者<%Listlist1(List)request.getAttribute("list");for(code089book:list1)%
虾米大王 虾米大王
3年前
java代码077
code077.jspAddBook0)out.println("成功添加了"row"条数据");param.close();conn.close();catch(Exceptione)out.println("图书信息添加失败");e.printStackTrace();%返回
虾米大王 虾米大王
3年前
java代码085
code085.jspexecuteBatch方法保存学生信息
Stella981 Stella981
3年前
React Hooks实现异步请求实例—useReducer、useContext和useEffect代替Redux方案
<blockquote本文是学习了2018年新鲜出炉的ReactHooks提案之后,针对<strong异步请求数据</strong写的一个案例。注意,本文假设了:<br1.你已经初步了解<codehooks</code的含义了,如果不了解还请移步<ahref"https://reactjs.org/docs/hooksintro.html
Stella981 Stella981
3年前
PHP代码静态分析工具PHPStan
<blockquote最近发现自己写的PHP代码运行结果总跟自己预想的不一样,排查时发现大多是语法错误,在运行之前错误已经种下。可能是自己粗心大意,或者说<codephpl</code检测太简单,不过的确是有一些语法错误埋藏得太深(毕竟PHP是动态语言),那么有没有办法,在代码代码正式运行之前,把语法错误全找出来呢?</blockquote<p
Stella981 Stella981
3年前
PHP返回Json数据函数封装
/返回Json数据@paramint$code@paramstring$message@paramarray$data@returnstring/publicfunctionretJson($code,$message'
Stella981 Stella981
3年前
Linux自动检测网站心跳通知shell脚本
!/bin/bashLIST("http://xxxx.com")NAME("评价系统getwindowList接口")for((i0;i<${LIST@};i))doHTTP_CODEcurlo/dev/nullsw"%{http_code}""${LIST
五、飞鹅官网API接口文档
接口列表1.获取网站信息请求方法:GET请求URL:/api/site/getSiteInfo请求参数无返回结果json"code":1,"data":"id":1,//id"title":"SampleSiteName",//网站名称"intro":"T