如何排查线上服务响应时间太长的问题

发布时间:2021-10-23 09:36:33 作者:iii
来源:亿速云 阅读:154

本篇内容介绍了“如何排查线上服务响应时间太长的问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

前言:

最近线上环境某个接口服务响应时间偏长,导致用户体验感超差;当出现这种情况时,我们该怎么快速的排查这类问题呢?

常用的排查思路:

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

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

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

模拟线上服务环境:

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

注意:服务接口代码为了简便,只写了 一些大循环的代码 来模拟较长的耗时;除此之外,实际上还包含很多多其它常见的情况,例如:

服务接口代码如下:

如何排查线上服务响应时间太长的问题

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

如何排查线上服务响应时间太长的问题

服务接口代码准备好后,使用IDEA开发工具将其导出为 Jar 包 。

服务接口代码和JMeter脚本获取地址:模拟Demo源码地址

为了模拟最为真实的线上环境,需将准备好的 服务接口Jar包 放到 Linux 服务器中,然后使用命令 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 ;开始运行的界面如图:

如何排查线上服务响应时间太长的问题

4、 运行完后,就可以使用 trace命令 统计服务接口方法调用链路上的全部节点的耗时;

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

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

例如:统计的本服务接口:

com.lyl.controller.TestController : 全限定类名

process:TestController 类中的方法;

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

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

通过trace 命令监控统计的调用链路各个方法的执行耗时,可以发现调用的 com.lyl.util.StringUtil 类中的 test2() 方法执行耗时比较大;

所以需要特别去查看这个方法的代码是否存在问题;

如果这个代码中还存在许多的方法调用链路,则需要再次使用 trace 命令进行监控调用链路的耗时,找出具体可能存在问题的方法。

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

注意:

①、使用Arthas 诊断的程序代码,在打包时 不能混淆 ,否则在使用trace 命令会报 类或方法找不到

②、在使用trace命令监控统计时,需要JMeter测试脚本正在运行调用服务接口,如果服务接口没有正在调用中,则统计不到内部调用链路的耗时情况;

“如何排查线上服务响应时间太长的问题”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

推荐阅读:
  1. 线上FullGC频繁的排查
  2. Java线上问题排查与参考答案

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

服务器

上一篇:windows API怎么使用入门sleep

下一篇:怎么在Linux中让sudo密码会话的超时更长些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》