您的位置:首页 > 科技 > IT业 > Java线上接口耗时分析神器 Arthas

Java线上接口耗时分析神器 Arthas

2024/12/25 23:50:23 来源:https://blog.csdn.net/ShockChen7/article/details/140234363  浏览:    关键词:Java线上接口耗时分析神器 Arthas

介绍

程序员的日常,总是离不开“调优”和“排查”。尤其当线上环境出现问题,性能瓶颈把人逼疯。这时候,你就需要一款像 Arthas 这样的神器来救场。

什么是 Arthas?

简单来说,Arthas 是阿里巴巴开源的 Java 诊断工具,号称“线上问题终结者”。通过它,我们可以在线上环境下实时监控和分析 Java 应用的性能问题。无论是耗时长的接口,还是奇怪的 CPU 使用率,都能一网打尽。

github地址

  • https://github.com/alibaba/arthas

官网文档地址:

  • https://arthas.aliyun.com/doc/

如何使用 Arthas?

Arthas的功能有什么?

你可以通过 Arthas 实现线程分析、内存泄漏检测、CPU 分析、类加载信息查看等一系列高级功能。

这里的说明引用官方文档,有不懂的可以自己去看官方文档,但本文今天要介绍的重点是他的线上接口耗时分析。

首先,确保你的环境满足要求,然后按照如下步骤操作:

1.下载 Arthas:从官方 GitHub 仓库下载 Arthas 的 zip 包并解压。

2.启动 Arthas:进入解压目录,运行 java -jar arthas-boot.jar 。Arthas 会自动找到当前运行的 Java 进程,并提示你选择要诊断的进程。

3.开始诊断:选择相应的进程后,你可以输入各种命令来分析问题。比如:

查看线程状态thread -n 3,显示当前消耗 CPU 最多的 3 个线程。

分析方法调用trace <class-name> <method-name>,跟踪指定方法的调用链,找出瓶颈。
- 比如我要分析类FileDownloadTaskApi中的fileDownload方法的耗时,我们使用如下命令

trace  com.dekeinfo.personnel.controller.filedownloadtask.web.FileDownloadTaskApi fileDownload -n 1

如果方法调用的次数很多,那么可以用-n参数指定捕捉结果的次数。比如上面的例子里,捕捉到一次调用就退出命令

到这里就是等待方法被调用。然后我们调用接口,让接口调用该方法,之后Arthas就会自动记录所有方法的调用时间了

在这里插入图片描述
可以看到listPackageByCondition()这个方法是比较耗时的

默认情况下,trace不会包含jdk里的函数调用,如果希望trace jdk里的函数,需要显式设置--skipJDKMethod false

上面的命令就变成如下方式了

trace --skipJDKMethod false com.test.query.OrderApplicationQueryService listPackage -n 1

其次也可以使用时间筛选命令,比如我们只展示方法调用耗时为>10ms的,则上面的命令变成如下方式

trace com.test.query.OrderApplicationQueryService listPackage '#cost > 10' -n 1

使用#cost > 10'即可

希望这篇文章能帮到你,祝你早日成为调优达人!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com