【Arthas性能排查系列(一)】检查Java程序调用链路的耗时情况

前言

针对一个接口,请求耗时过长,是忍无可忍的,但是如果没有工具的帮助,是否还单纯的使用 System.currentTimeMillis() 去打印时间?倘若我们一个接口里面的调用链路包含100多个实现方法,那怎么排查是哪个方法导致的整体耗时过长?

解决思路关键词

Arthas、trace命令

使用Arthas排查

前提:启动Java项目

  1. GitHub直接下载Arthas即可,下载官方的包 arthas-bin.zip
  2. 本地启动Arthas,使用 java -jar 启动 arthas-boot.jar
    在这里插入图片描述
  3. 找到Java项目所占用的线程PID,输入对应的数字即可
  4. 倘若输入对应的数字的时候,发现无法执行,则说明没配置成JAVA_HOME,可以输入命令 java_home -v 查看是否配置成功。如果不行的话,可以指定jdk的bin目录,执行 java -jar,譬如我的jdk下bin目录地址是 /Library/Java/JavaVirtualMachines/jdk1.8.0_333.jdk/Contents/Home/bin,则执行命令如图:
    在这里插入图片描述

/Library/Java/JavaVirtualMachines/jdk1.8.0_333.jdk/Contents/Home/bin/java -jar arthas-boot.jar

  1. 输入指定的PID所对应的编号数字后,即可看到Arthas监控Java程序成功
  2. 使用trace命令,指定我们想要查看的方法,举例:

格式:trace [全限定类名] [类中的方法名]
例如:trace com.core.service.TeacherService search

  1. 监听成功后,请求接口,即可观察指定方法中调用的所有链路方法的耗时,可见此处耗时最大的方法,总耗时率占67.19%,即可对其进行排查
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值