jmx
监控java应用程序占用的内存、cpu、线程数等通用的属性;
也可以监控java bean的属性值;
也可以通过rmi远程方法调用的方式调用java bean的方法
参考:https://www.jianshu.com/p/fa4e88f95631
arthas
官网:https://arthas.aliyun.com/doc/quick-start.html
查看进程中占用CPU最高的n个线程
thread -n 3
查看进程中占用cou最高的3个线程的详情
查看哪个线程阻塞住了
thread -b
查看代码在线上是否生效
jad 全类名
例如 jad jad com.kuaishou.merchant.open.platform.order.model.OpenRefundFundItem
会打印出线上运行的类OpenRefundFundItem反编译后的代码
查看方法的入参和出参
watch 全类名 方法名 “{params,returnObj}” -x 2
其中,-x 2代表如果参数和返回中有嵌套,最多递归几层
如 watch com.kuaishou.merchant.db.base.DeepShardDAOBaseInsert update “{params,returnObj}” -x 2
查看类DeepShardDAOBaseInsert的update方法
查看方法的调用链路和执行耗时
方法执行时间长,怎么排查是哪一步速度慢?通过打日志的方式太慢太麻烦
trace 全类名 方法名 ‘#cost > 5’
‘#cost > 5’ 代表耗时大于5ms
会打印出所有大于5ms的子操作以及耗时
监控某个方法的执行情况(耗时、成功失败次数)
monitor 全类名 方法名 -n 10 --cycle 10
-n 10 每10秒取一次样
–cycle 10 取10轮
更改线上某个类的日志级别
(1)sc -d 全类名
通过sc获取类的hashcode
(2) logger -c hashcode --DEBUG
通过logger调整类的日志级别为debug