一、命令
1. thread 查看所有正在运行的线程以及占用的CPU等情况。
针对出现死循环或者CPU飙高的情况下使用。可以快速定位到问题在源码中出现的行号。
thread -n 5 //查看目前CPU使用率最高的前5个线程。
thead //查看所有线程情况,可以看到死锁的线程
thread -b //查看死锁的线程以及死锁产生的位置
2. dashboard 数据面板,包含线程ID、线程名称、优先级、状态、占用CPU比例、内存使用情况、运行时JAVA环境信息等内容。
3. jad 命令,查看某个具体类的源码
jad 类名
4. watch 命令:能方便的观察到指定方法的调用情况,返回值、抛出异常、入参(特殊值、异常没有捕获排查)
watch com.smarthome.ehaier.mall.third.domain.domainservice.OrderDetailThirdService * '{params,returnObj,throwExp}' -n 5 -x 3
5. trace命令:方法内部调用路径,并输出方法路径上的每个节点上耗时(性能问题,调用链问题)
trace Pool main -n 5 --skipJDKMethod false
6. monitor命令: 方法执行监控(性能问题排查,一段时间内的性能指标),比如成功调用次数、失败调用次数、平均耗时等信息。
monitor com.smarthome.ehaier.mall.third.domain.domainservice.OrderDetailThirdService getOrderDetail -n 10 --cycle 10
7. stack命令: 获取方法从哪里执行的调用栈(用途:源码学习调用堆栈,了解调用流程)
stack com.smarthome.ehaier.mall.third.domain.domainservice.OrderDetailThirdService getOrderDetail -n 5
8. tt命令: 方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测(可以重新触发,周期触发,唯一缺点对于ThreadLocal 信息丢失[隐含参数]、引用对象数据变更无效)
tt -t com.smarthome.ehaier.mall.third.domain.domainservice.OrderDetailThirdService getOrderDetail -n 5 //列出前5次请求的详情,包含请求index, timestamp, cost(ms),class, method等信息。
tt -i 1000 //查看index=1000时,请求的入参,出参,耗时等数据。
tt -p -i 1000 //index=1000的请求重新触发一次 -play
tt -p --replay-times 5 --replay-interval 2000 -i 1000 //重新触发5次,每次时间间隔2s
热力图:展示某一个时间段的
profiler start
profiler stop