trace命令使用
trace 能方便的帮助你定位和发现因 RT 高而导致的性能问题缺陷,但每次只能跟踪一级方法的调用链路
注:以下命令按”q”退出
1,监控方法的请求链路以及耗时,次数=3,耗时>1毫秒:
1
| trace cn.soilove.expro.webadmin.AdminLoginController login -n 3 "#cost>1"
|
2,将jdk函数执行过程也收集出来:
1
| trace --skipJDKMethod false cn.soilove.expro.webadmin.AdminLoginController login -n 3 "#cost>1"
|
跟踪效果:
1 2 3 4 5 6 7 8 9 10 11
| Affect(class count: 1 , method count: 1) cost in 344 ms, listenerId: 1 `---ts=2020-06-17 13:57:24;thread_name=http-nio-8080-exec-2;id=1c;is_daemon=true;priority=5;TCCL=org.springframework.boot.web.embedded.tomcat.TomcatEmbeddedWebappClassLoader@fe9da7 `---[109.157235ms] cn.soilove.expro.webadmin.AdminLoginController:login() +---[0.048382ms] cn.soilove.expro.webadmin.vo.login.AdminLoginParam:getUserName() #39 +---[0.025775ms] org.apache.commons.lang3.StringUtils:isEmpty() #39 +---[0.024296ms] cn.soilove.expro.webadmin.vo.login.AdminLoginParam:getUserPwd() #40 +---[0.015797ms] org.apache.commons.lang3.StringUtils:isEmpty() #40 +---[0.013396ms] cn.soilove.expro.webadmin.vo.login.AdminLoginParam:getUserName() #44 +---[0.014851ms] cn.soilove.expro.webadmin.vo.login.AdminLoginParam:getUserPwd() #44 +---[108.179494ms] cn.soilove.expro.service.user.AdminUserService:login() #44 `---[0.046167ms] cn.soilove.expro.common.Response:success() #46
|
thread命令使用
thread是线程排查命令
1,一键展示当前最忙的前N个线程并打印堆栈
2,有时候我们发现应用卡住了,通常是由于某个线程拿住了某个锁, 并且其他线程都在等待这把锁造成的。
为了排查这类问题,arthas提供了一键找出那个罪魁祸首的命令