栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【arthas】使用arthas定位接口耗时问题、无日志情况下排查问题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【arthas】使用arthas定位接口耗时问题、无日志情况下排查问题

接口返回时间过长,一般会看日志来定位耗时步骤,如果没有打日志,或者关键步骤日志打印的不如预期,则不好定位了。
此时可以借助arthas进行定位,其原理就是附加到指定的java进程,对关注的方法进行监听,对实时请求进行分析。

1.使用命令 ps -ef|grep 进程名 查看进程id和用户

2.切换到进程用户,否则后面附加进程会报错

3.启动arthas并附加到进程
启动arthas命令: /opt/huawei_jdk/jdk1.8.0_262/bin/java -jar /opt/arthas/arthas-boot.jar
arthas会将可以附加的进程都列出来,这里我们可以看到进程id 277648是第9个

输入9后回车,看到下图的输入光标就是附加成功了,arthas此时在等待用户输入监听命令,此例我们介绍trace和watch两个命令,如果附加不成功,优先考虑是否是因为用户不对或其他权限问题

Arthas命令trace使用

trace命令可以查看某个方法调用其他方法时的耗时。语法:trace 全类名 方法名(可以附带一些参数,具体可以查阅官方文档)
然后就打桩成功,开始监听此方法的调用了,去操作页面进行相关操作,可以看到操作一次,就会打印一次调用栈:

注意:trace命令只会追踪一层,所以看到耗时较多的方法后,如果还不足以分析出原因,需要调整trace语句为下一层的方法,进一步trace,直到最后分析出根因

Arthas命令watch使用

watch命令可以查看某个方法的入参和返回值。(定位问题却苦于没有打印日志的场景下可以用此方法)
语法:watch 全类名 方法名 参数(具体可以查阅官方文档)

图例中带了2个参数。解释如下;
1.{params,returnObj} 表示同时打印入参和返回,如果只需要打印返回,那么用returnObj就可以了
2.-x 5 此例中返回的参数是个列表,且对象比较复杂,属性和层次比较多,需要指定打印的深度,这里指定5就是从数组往对象结构里打印5层的意思,设置太小了就看不到对象细节了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/999855.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号