最困难的事情就是认识自己!

个人网站 ,欢迎访问!

前言:最近线上环境某个接口服务响应时间偏长,导致用户体验超差,那平时该怎么快速的排查这类问题呢?

①、为代码添加上详细的打印日志; 不建议 ,一是线上环境,没法随便的重新部署更换了详细日志的代码,二是 添加详细的日志输出,那就意味这会生成大量的日志文件,这些日志文件会占据大量服务器磁盘空间。

②、搭建一个模拟了线上环境的测试环境进行复盘排查;额,出现了这种问题哪有那么多的时间让你进行环境复盘排查,所以此方案也是 不建议的 。

③、线上诊断神器 命令 用来排查问题; 当出现上面的响应时间偏长的问题,就可以使用 Arthas 提供的

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

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

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

模拟线上环境:

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

①、服务接口方法中存在很多的 JDBC 操作 ,并且由于数据库中数据量太大,导致很多的 JDBC 查询非常耗时,并且此时可能由于还没有创建合适的索引,导致查询耗时更加的长,最终导致服务接口响应时间偏长;

②、此服务接口中调用了 其它的服务接口 ,由于内部调用的其它服务接口出现问题等,导致此其它服务接口执行耗时比较长,进而导致服务接口响应时间偏长;

服务接口代码如下:

test1、test2方法如下:

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

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

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

为了模拟最为真实的线上环境,需将准备好的 服务接口 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 命令能主动搜索 class-pattern/method-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测试脚本正在运行调用服务接口,如果没有调用,则统计不到内部调用链路的耗时情况;

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

❤不要忘记留下你学习的足迹 [点赞 + 收藏 + 评论]嘿嘿ヾ一切看文章不点赞都是“耍流氓”,嘿嘿ヾ(◍°∇°◍)ノ゙!开个玩笑,动一动你的小手,点赞就完事了,你每个人出一份力量(点赞 + 评论)就会让更多的学习者加入进来!非常感谢! ̄ω ̄=

jmeter查看平均响应时间_线上服务平均响应时间太长,怎么排查?相关推荐

  1. springboot怎么杀进程_线上服务平均响应时间太长,怎么排查?

    线上服务平均响应时间太长,怎么排查? https://xie.infoq.cn/article/914b5c56000a3880016abd8d6 前言: 最近线上环境某个接口服务响应时间偏长,导致用 ...

  2. 线上服务Java进程假死快速排查、分析

    线上服务Java进程假死快速排查.分析 最近我们有一台服务器上的Java进程总是在运行个两三天后就无法响应请求了,具体现象如下: 请求业务返回状态码502,查看进程还在,意味着Java进程假死,无法响 ...

  3. 某个软件调用目标异常_线上RPC远程调用频繁超时问题排查,大功臣Arthas

    来源于公众号Java艺术 , 作者wujiuye 两耳不闻窗外事,一心只读圣贤书.又是一个美好的周末,一觉睡到自然醒,写写文章看看书!这周原计划是写Dubbo注册中心的,但这周先说故事. 上次服务雪崩 ...

  4. 分页缓冲池占用很高怎么解决_一次线上服务高 CPU 占用优化实践

    线上有一个非常繁忙的服务的 JVM 进程 CPU 经常跑到 100% 以上,下面写了一下排查的过程.通过阅读这篇文章你会了解到下面这些知识. Java 程序 CPU 占用高的排查思路 可能造成线上服务 ...

  5. 新零售背景下“农村淘宝“线下和线上服务

    新零售背景下"农村淘宝"线下和线上服务 农村淘宝在做什么? 2019年对于农村淘宝(下文简称"村淘")来说是关键的一年,作为阿里巴巴集团新零售战略中的第六路大军 ...

  6. java - JVM 线上服务的FGC问题排查

    线上服务的GC问题,是Java程序非常典型的一类问题,非常考验工程师排查问题的能力.同时,几乎是面试必考题,但是能真正答好此题的人并不多,要么原理没吃透,要么缺乏实战经验. 过去半年时间里,我们的广告 ...

  7. 线上服务的FGC问题排查,看这篇就够了!

    线上服务的GC问题,是Java程序非常典型的一类问题,非常考验工程师排查问题的能力.同时,几乎是面试必考题,但是能真正答好此题的人并不多,要么原理没吃透,要么缺乏实战经验. 过去半年时间里,我们的广告 ...

  8. 【转】线上服务的FGC问题排查,看这篇就够了!

    线上服务的GC问题,是Java程序非常典型的一类问题,非常考验工程师排查问题的能力.同时,几乎是面试必考题,但是能真正答好此题的人并不多,要么原理没吃透,要么缺乏实战经验. 过去半年时间里,我们的广告 ...

  9. JVM:线上服务的FGC问题排查

    原文链接:https://blog.csdn.net/bestxianfeng163/article/details/107972060 线上服务的GC问题,是Java程序非常典型的一类问题,非常考验 ...

最新文章

  1. Solr部署如何启动
  2. SILVAngs:免费在线宏基因组扩增子分析系统
  3. 【编码】-小Ho的防护盾-2016.08.14
  4. 未处理的异常:进程性能计数器已禁用
  5. Lombok的使用方法
  6. OC基础1:一些基本概念
  7. 你不知道你不懂javascript
  8. 【重要】ionic和Angular的安装步骤
  9. kafka消费的三种模式_kafka消费者的三种模式(最多/最少/恰好消费一次)
  10. Linux专题_行编辑
  11. docker 安装_Docker-安装
  12. 数字图像处理怎么讲yiq空间变成rgb空间_【JTRP】屏幕空间深度边缘光 Screen Space Depth Rimlight...
  13. CE驱动程序快速入门
  14. Matplotlib:直方图示例(2):正态分布。
  15. 【干货】移动APP测试用例设计实践经验分享
  16. 锐捷服务器端口映射教程,锐捷路由器端口映射,路由器端口映射
  17. Hive获取周月时间
  18. 分享Photoshop脚本代码_压缩,图片置灰,切图导出等
  19. MATLAB 画点图即连线
  20. 安卓玩机搞机技巧综合资源-----全安卓机型通用线刷 卡刷教程。新老机型可参考【十八】

热门文章

  1. 台式计算机用u盘给电脑安装系统,台式机用u盘装系统 电脑店给台式机装系统详细教程...
  2. delphi控件切图界面闪烁_「这个控件叫什么」系列之加载占位图+页面指示器
  3. Rabin-Karp算法 (拉宾-卡普)
  4. 高质量的文本链接一样可以提高网站排名
  5. 免费开源JAVA报表工具对比 BIRT报表VS润乾报表之初体验
  6. c/c++中常见的uint8和int的联系
  7. 搭建自己的dns服务器
  8. C++使用windows API实现https站点的访问
  9. word或wps的相关API脚本js操作
  10. 文件描述符fd和文件指针File* fp的区别和转换