生活随笔
收集整理的这篇文章主要介绍了
arthas使用
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
arthas使用
安装下载
基础命令
wget https://alibaba.github.io/arthas/arthas-demo.jar
java -jar arthas-demo.jar
查看dashboard:输入dashboard,会展示当前进程信息,按ctrl+c可中断执行
ID NAME GROUP PRIORITY STATE
% CPU TIME INTERRUPTED DAEMON
552 Timer
- for - arthas
- dashboard
- 8 cbf395a
- b670
- 4 c system
10 RUNNABLE
65 0 : 0 false true
176 sentinel
- time
- tick
- thread main
5 TIMED_WAITING
29 52 : 56 false true
186 DubboResponseTimeoutScanTimer main
5 TIMED_WAITING
2 3 : 10 false true
124 New
I / O server boss #
1 ( [ id
: 0x1be37c6d , / 0 main
5 RUNNABLE
1 0 : 15 false true
33 Abandoned connection cleanup thread main
5 TIMED_WAITING
0 0 : 6 false true
509 AsyncAppender
- Worker
- arthas
- cache
. result
. As system
9 WAITING
0 0 : 0 false true
120 AsyncResolver
- bootstrap
- 0 main
5 TIMED_WAITING
0 0 : 0 false true
237 AsyncResolver
- bootstrap
- executor
- 0 main
5 WAITING
0 0 : 0 false true
507 Attach Listener system
9 RUNNABLE
0 0 : 0 false true
107 ClientHouseKeepingService main
5 TIMED_WAITING
0 0 : 9 false true
435 ClientHouseKeepingService main
5 TIMED_WAITING
0 0 : 7 false true
29 Curator
- ConnectionStateManager
- 0 main
5 WAITING
0 0 : 0 false true
84 Curator
- ConnectionStateManager
- 0 main
5 WAITING
0 0 : 0 false true
32 Curator
- Framework
- 0 main
5 WAITING
0 0 : 0 false true
87 Curator
- Framework
- 0 main
5 WAITING
0 0 : 0 false true
67 Curator
- TreeCache
- 0 main
5 WAITING
0 0 : 0 false true
Memory used total max usage GC
heap
242 M
583 M
583 M
41.52 % gc
. parnew
. count
563
par_eden_space
161 M
245 M
245 M
65.61 % gc
. parnew
. time ( ms
) 3692
par_survivor_space
1 M
30 M
30 M
5.06 % gc
. concurrentmarksweep
. count
3
cms_old_gen
79 M
307 M
307 M
25.89 % gc
. concurrentmarksweep
. time ( ms
) 299
nonheap
179 M
183 M
744 M
24.18 %
code_cache
60 M
61 M
240 M
25.14 %
metaspace
107 M
109 M
256 M
41.92 %
Runtime
os
. name Linux
os
. version
3.10 .0 - 862.9 .1 . el7
. x86_64
java
. version
1.8 .0 _191
java
. home
/ usr
/ java
/ jdk1
. 8.0 _191
/ jre
systemload
. average
1.18
processors
2
uptime
430681 s
jad com
. zhenai
. profile
. provider
. modules
. member
. service
. impl
. AppointmentServiceImpl
进阶命令
class/classloader相关
sc-查看jvm已经加载的类信息:Search-Class简写,这个能搜索出所有已经加载到jvm的class,支持参数[d],[E],[f],[x:] -d: 输出当前类的详细信息 -e: 开启正则表达式匹配,默认为通配符匹配 -f: 输 出当前类的成员变量信息,需要配合-d 一起使用 -x : 指定输出静态变量时属性的遍历深度,默认0
$ sc com
. zhenai
. profile
. provider
. modules
. member
. service
. impl
. *
$ sc
- d com
. zhenai
. profile
. provider
. modules
. member
. service
. impl
. AppointmentServiceImpl
sc
- d
- f com
. zhenai
. profile
. provider
. modules
. member
. service
. impl
. AppointmentServiceImpl
sm-Search-Method简写,这个命令能搜索出已经加载的class信息的方法信息。参数如下 -d : 展示每个方法详细信息 -e : 开启正则默认通配符匹配
sm com
. zhenai
. profile
. provider
. modules
. member
. service
. impl
. AppointmentServiceImpl
sm
- d com
. zhenai
. profile
. provider
. modules
. member
. service
. impl
. AppointmentServiceImpl
jad- 将jvm中实际运行的class的byte code反编译成java代码。
jad com
. zhenai
. profile
. provider
. modules
. member
. service
. impl
. AppointmentServiceImpl
jad com
. zhenai
. profile
. provider
. modules
. member
. service
. impl
. AppointmentServiceImpl getAddress
mc-Memory Compiler内存编译器,编译.java文件生成class文件
mc
/ temp
/ test
. java
monitor-方法执行监控,非实时返回命令,监控纬度如下: timeStamp-时间戳 class-java类 method-方法 total-调用次数 success-成功次数 fail-失败次数 rt-评价rt fail-tate - 失败率
monitor
- c
5 com
. zhenai
. profile
. provider
. modules
. member
. service
. impl
. AppointmentServiceImpl getAddress
watch- 方法执行数据观测,参数如下 -b: 方法调用之前观察 -e: 方法异常后观察 -s : 方法返回后观察 -f : 方法结束后(正常,异常返回)观察 -E: 开启正则 x: 指定输出结果的属性遍历深度 这里重点要说明的是观察表达式,观察表达式的构成主要由 ognl 表达式组成,所以你可以这样写"{params,returnObj}",只要是一个合法的 ognl 表达式,都能被正常支持。
watch com
. zhenai
. profile
. provider
. modules
. member
. service
. impl
. AppointmentServiceImpl getAddress
"{params, returnObj}" - x
2
watch com
. zhenai
. profile
. provider
. modules
. member
. service
. impl
. AppointmentServiceImpl getAddress
"{params, returnObj}" - x
2 - b
watch com
. zhenai
. profile
. provider
. modules
. member
. service
. impl
. AppointmentServiceImpl getAddress
"{params, returnObj}" - x
2 - b
- s
- n
2
watch com
. zhenai
. profile
. provider
. modules
. member
. service
. impl
. AppointmentServiceImpl getAddress
"{params, target}" - x
2
watch com
. zhenai
. profile
. provider
. modules
. member
. service
. impl
. AppointmentServiceImpl getAddress
"{params[0],target}" "params[0]>0"
watch com
. zhenai
. profile
. provider
. modules
. member
. service
. impl
. AppointmentServiceImpl getAddress
"{params[0],thromExp}" - e
- x
2 watch com
. zhenai
. profile
. provider
. modules
. member
. service
. impl
. AppointmentServiceImpl getAddress
'{params, target}' '#cost>10' - x
2
trace- 方法内部调用路径,并输出方法路径上的每一个节点耗时,参数: [E] : 正则匹配 [n:] : 命令执行次数 ”#cost“ : 方法执行耗时
trace
- E com
. zhenai
. profile
. provider
. modules
. member
. service
. impl
. AppointmentServiceImpl getAddress
| getExpecttrace
- E
- j com
. zhenai
. profile
. provider
. modules
. member
. service
. impl
. AppointmentServiceImpl getAddress
| getExpect
'#cost>1'
stack com
. zhenai
. profile
. provider
. modules
. member
. service
. impl
. AppointmentServiceImpl getAddress
'params[0]>0' - n
2
stack com
. zhenai
. profile
. provider
. modules
. member
. service
. impl
. AppointmentServiceImpl getAddress
'#cost>5'
tt -方法执行的时空隧道,记录指定方法每次调用入参以及返回值,
//基本使用 -n参数指定监控次数,不指定无限制,会将jvm内存耗尽
tt -t com.zhenai.profile.provider.modules.member.service.impl.AppointmentServiceImpl getAddress -n 3
返回如下:
tt
- s
'method.name=="getAddress"'
tt
- i
1001
tt
- i
1004 - p
参考文献
总结
以上是生活随笔 为你收集整理的arthas使用 的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得生活随笔 网站内容还不错,欢迎将生活随笔 推荐给好友。