下载arthas-boot.jar,然后用java -jar的方式启动:
curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar
或者
最新版下载
查看方法内部执行堆栈
方法内部调用路径,并输出方法路径上的每个节点上耗时
trace com.xxx.manage.impl.UserServiceImpl getUser
查看方法出入参
watch com.xxx.manage.impl.UserServiceImpl getUser '{params,returnObj,throwExp}' -x 3
watch -x 3 -n 1 org.springframework.web.servlet.DispatcherServlet doDispatch '@org.springframework.web.context.request.RequestContextHolder@currentRequestAttributes().getRequest().getHeader("Authorization")'
查找类的 classLoaderHash
sc -d com.xxx.manage.util.SpringContext
查看类成员变量的值
vmtool --action getInstances --className 包名+类名 --express instances[0].需要查看的变量
vmtool --action getInstances --className com.xxx.xx --express instances[0].testname
#在内存中查找字符串
vmtool --action getInstances --className java.lang.String --limit 1000000000 | grep myString
查看类中的静态变量
getstatic 包名+类名 静态变量名
getstatic com.test.TestClass staticName
执行类的方法
ognl -c 31221be2 '@com.manage.util.SpringContext@getBean("userService")' -x 2
ognl -c 31221be2 '@com.manage.util.SpringContext@getBean( @org.xx.XxService@class )' -x 3
获取spring配置
ognl -c 31221be2 '#context=@com.xxx.manage.util.SpringContext@applicationContext,#context.getEnvironment().getProperty("ca.enable")'
或者
tt -t org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter invokeHandlerMethod
tt -i 1000 -w 'target.getApplicationContext().getBean("baiduSchedule").startSchedule()'
查看方法被调用堆栈
很多时候我们都知道一个方法被执行,但这个方法被执行的路径非常多,或者你根本就不知道这个方法是从那里被执行了,此时你需要的是 stack 命令。
stack com.xxx.manage.impl.UserServiceImpl getUser
查询异常状态码返回的堆栈
stack -E javax.servlet.http.HttpServletResponse sendError|setStatus params[0]==404
mybatis 动态代理类
查看最高占用的线程
thread -n 3
查看当前JVM的系统属性
sysprop
查看当前JVM的环境属性
sysenv
查看,更新VM诊断相关的参数
vmoption
有问题请联系hudcan@sina.com 个人网站:http://ext.123cc.cc
Original: https://www.cnblogs.com/mysgk/p/15701491.html
Author: mysgk
Title: arthas 线上排查常用命令
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/619943/
转载文章受原作者版权保护。转载请注明原作者出处!