“arthas是一个Java开源诊断神器。
今天分享一个非常重要的命令tt,全称是TimeTunnel,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测。这个命令与之前讲到的arthas命令watch观察方法调用(上)](https://mp.weixin.qq.com/s/6fMKP7H4Q7ll_0v-wyN19g)、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。 ---来自腾讯云社区的---八音弦
微信扫一扫打赏
支付宝扫一扫打赏