前言:

文章接下来将从两方面展开:

①、搭建模拟线上服务接口响应时间偏长的环境;SpringBoot 服务接口 + JMeter 模拟服务接口调用;

②、使用诊断神器 Arthas 提供的命令 trace 命令进行响应时间偏长的问题排查;

模拟线上环境:

1、SpringBoot 项目搭建,并且编写好服务接口;

服务接口代码如下:

test1、test2方法如下:

2、JMeter 模拟用户调用的测试脚本配置:

3、服务接口 SpringBoot 代码 和 JMeter 测试脚本的所在项目位置:

为了模拟最为真实的线上环境,需将准备好的 服务接口 Jar 包放到 服务器中,然后使用命令 java -jar *.jar 运行起 Jar 包; 然后使用 JMeter 进行接口的调用,在 聚合报告 中发现平均响应时间偏长;如图:

如果有用户反映某功能响应时间太长了,别着急,根据下面的方法进行排查,绝对方便又快速的找到问题原因。

Arthas 问题排查:

1、首先需要下载阿里开源的Arthas 的诊断工具 Jar 包,下载地址:arthas-boot.jar ;然后将 Jar 包放到 部署服务接口项目的服务器中

2、然后使用 ps 命令,查询出当前运行服务接口的程序进程号;例如:本文章模拟的服务接口程序 Jar 包名称为 springboot_arthas-1.0.0.jar ,所以命令为: ps -ef | grep springboot_arthas-1.0.0

3、然后运行Arthas 诊断工具,命令:java -jar arthas-boot.jar ;开始运行的界面如图:

此时诊断工具还没有运行完,需要手动选择要诊断/监控的java 进程,并且此工具也会列出全部的java进程号,你只需要输入 它们最前的序号 [1] 即可;如图:

4、运行完后,可以使用 trace命令 监控服务接口方法中调用的其它方法的耗时;

trace 命令能主动搜索 class-patternmethod-pattern 对应的方法调用路径,渲染和统计整个调用链路上的所有性能开销和追踪调用链路。

具体命令格式: trace [全限定类名] [类中的方法名]

例如:监控本服务接口;

com.lyl.controller.TestController : 全限定类名,process:TestController 类中的方法;

具体命令: trace com.lyl.controller.TestController process

5、trace 命令执行结果展示,如图:

Arthas 阿里开源的诊断工具还提供了很多的命令供使用,大家可以去查看学习,地址:命令列表

由于本人水平有限,如有问题,敬请提出;

❤不要忘记留下你学习的足迹 [点赞 + 收藏 + 评论]嘿嘿ヾ

03-05 22:30