本篇内容主要讲解“如何使用Arthas的trace命令排查线上服务平均响应时间太长问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用Arthas的trace命令排查线上服务平均响应时间太长问题”吧!
最近线上环境某个接口服务响应时间偏长,导致用户体验超差,那平时该怎么快速的排查这类问题呢?
本文接下来将从两方面展开:
下面我们先模拟线上环境:利用 SpringBoot 项目搭建,并且编写好服务接口;
注意:服务接口代码为了简便,只写了 一些大循环的代码 来模拟较长的耗时;除此之外,实际上还包含很多多其它常见的情况,例如:
服务接口代码如下:
test1、test2方法如下:
第二步 JMeter 模拟用户调用的测试脚本配置:
第三步服务接口 SpringBoot 代码 和 JMeter 测试脚本的所在项目位置:
服务接口代码准备好后,使用IDEA开发工具等方式将其导出为 Jar 包 。
为了模拟最为真实的线上环境,需将准备好的 服务接口 Jar 包放到 服务器中,然后使用命令 java -jar *.jar 运行起 Jar 包;然后使用 JMeter 进行接口的调用,在 聚合报告 中发现平均响应时间偏长;如图:
如果有用户反映某功能响应时间太长了,别着急,根据下面的方法进行排查,绝对方便又快速的找到问题原因。
Arthas 问题排查:
此时诊断工具还没有运行完,需要手动选择要诊断/监控的java 进程,并且此工具也会列出全部的java进程号,你只需要输入 它们最前的序号 [1] 即可;如图:
运行完后,可以使用 trace命令 监控服务接口方法中调用的其它方法的耗时;
trace 命令能主动搜索 class-pattern/method-pattern 对应的方法调用路径,渲染和统计整个调用链路上的所有性能开销和追踪调用链路。
具体命令格式:trace [全限定类名][类中的方法名]
例如:监控本服务接口;com.lyl.controller.TestController : 全限定类名,process:TestController 类中的方法;
具体命令举例如下所示:
trace com.lyl.controller.TestController process
trace 命令执行结果展示,如图:
❝通过trace 命令监控统计的调用链路各个方法的执行耗时,可以发现调用的 com.lyl.util.StringUtil 类中的 test2() 方法执行耗时比较大;所以需要特别去查看这个方法的代码是否存在问题;如果这个代码中还存在许多的方法调用链路,则需要再次使用 trace 命令进行监控调用链路的耗时,找出具体可能存在问题的方法。
❞
Arthas 阿里开源的诊断工具还提供了很多的命令供使用,大家可以去查看学习。B站搜“业余草”也可以查看到我之前录制的视频教程。
另外这里有两个需要注意的地方:
到此,相信大家对“如何使用Arthas的trace命令排查线上服务平均响应时间太长问题”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。