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'即可

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/778248.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端八股文 对$nextTick的理解

$nexttick是什么? 获取更新后的dom内容 为什么会有$nexttick ? vue的异步更新策略 (这也是vue的优化之一 要不然一修改数据就更新dom 会造成大量的dom更新 浪费性能) 这是因为 message &#xff08;data&#xff09;数据在发现变化的时候&#xff0c;vue 并不会立刻去更…

学习笔记——动态路由——IS-IS中间系统到中间系统(区域划分)

三、IS-IS区域划分 根据IS-IS路由器邻居关系&#xff0c;可以将IS-IS划分为两个区域——骨干区域和非骨干区域。&#xff08;注意&#xff0c;这里的区域不是上文中提到的Area ID&#xff09;由L2的IS-IS邻居构成的区域为骨干区域&#xff0c;由L1的IS-IS邻居构成的区域为非骨…

c与c++的内存管理

给出内存四个分区名字&#xff1a;栈区、堆区、全局区&#xff08;俗话也叫静态变量区&#xff09;、代码区&#xff08;也叫代码段&#xff09;&#xff08;代码段又分很多种&#xff0c;比如常量区&#xff09; 当然也会看到别的定义如&#xff1a; 两者都正确&#xff0c;记…

Adobe Acrobat添加时间戳服务器

文章目录 前言一、Adobe Acrobat添加时间戳服务器1.打开Adobe Acrobat软件2.点击【菜单】→ 【首选项】3.点击【安全性】→【更多】4.点击【新建】5.输入【名称】→【服务器URL】 前言 一、Adobe Acrobat添加时间戳服务器 1.打开Adobe Acrobat软件 2.点击【菜单】→ 【首选项…

广州佛山中山数据中心机房搬迁公司

随着数据中心的发展和迭代&#xff0c;必然面临数据中心搬迁。数据中心搬迁听来简单&#xff0c;其实涉及诸多方面&#xff0c;如信息迁移的安全性、业务的连续性、搬迁的规范性、方案的可行性、组织的统一性等。友力科技&#xff08;广州&#xff09;有限公司&#xff0c;自原…

IT专业入门,高考假期预习指南—初识产品经理BRD、MRD 和 PRD

七月来临&#xff0c;各省高考分数已揭榜完成。而高考的完结并不意味着学习的结束&#xff0c;而是新旅程的开始。对于有志于踏入IT领域的高考少年们&#xff0c;这个假期是开启探索IT世界的绝佳时机。作为该领域的前行者和经验前辈&#xff0c;你是否愿意为准新生们提供一份全…

Python + OpenCV 开启图片、写入储存图片

这篇教学会介绍OpenCV 里imread()、imshow()、waitKey() 方法&#xff0c;透过这些方法&#xff0c;在电脑中使用不同的色彩模式开启图片并显示图片。 imread() 开启图片 使用imread() 方法&#xff0c;可以开启图片&#xff0c;imread() 有两个参数&#xff0c;第一个参数为档…

算法库应用--Brute - Force算法串匹配(顺序串)

学习贺利坚老师关于B-F算法的算法库 数据结构例程——串的模式匹配&#xff08;Brute-Force算法&#xff09;_sqstring s, t; strassign(s,"ababcabcacbabcaccab");-CSDN博客 本人规则解析博客 串的匹配 (Brute - Force 算法)_brute force算法-CSDN博客\ 版本更新日志…

郭明錤:苹果将为Vision Pro推出红外摄像头款AirPods

在科技界,苹果公司的每一次创新都备受瞩目。近日,著名苹果分析师郭明錤透露了一个令人振奋的消息:苹果计划在2026年推出配备红外摄像头的新款AirPods,这款耳机将特别优化与Apple Vision Pro头显的空间体验。这一消息不仅预示着苹果在音频设备领域的又一次技术飞跃,也进一步…

工作手机怎么做好业务员工作微信的监控管理

什么是工作手机管理系统&#xff1f; 工作手机管理系统是专为企业管理设计的员工微信管理&#xff0c;它通过监控通讯记录、保障数据安全、自动检测敏感行为、永久保留客户信息等功能&#xff0c;帮助企业提升销售效率、维护客户资源安全&#xff0c;并确保业务流程的合规性。…

04-ArcGIS For JavaScript的可视域分析功能

文章目录 综述代码实现代码解析结果 综述 在数字孪生或者实景三维的项目中&#xff0c;视频融合和可视域分析&#xff0c;一直都是热点问题。Cesium中&#xff0c;支持对阴影的后处理操作&#xff0c;通过重新编写GLSL代码就能实现视域和视频融合的功能。ArcGIS之前支持的可视…

在 PostgreSQL 中,如何处理数据的版本控制?

文章目录 一、使用时间戳字段进行版本控制二、使用版本号字段进行版本控制三、使用历史表进行版本控制四、使用 RETURNING 子句获取更新前后的版本五、使用数据库触发器进行版本控制 在 PostgreSQL 中&#xff0c;处理数据的版本控制可以通过多种方式实现&#xff0c;每种方式都…

开源六轴协作机械臂myCobot 280接入GPT4大模型!实现更复杂和智能化的任务

本文已经或者同济子豪兄作者授权对文章进行编辑和转载 引言 随着人工智能和机器人技术的快速发展&#xff0c;机械臂在工业、医疗和服务业等领域的应用越来越广泛。通过结合大模型和多模态AI&#xff0c;机械臂能够实现更加复杂和智能化的任务&#xff0c;提升了人机协作的效率…

zerotier-one自建根服务器方法五

一、简介 前面几篇文章已经写完了自己建立服务器的方法&#xff0c;今天写一下我在使用过程中遇到的问题和解决方法。 二、准备工作 准备一个有公网IP的云主机。 要稳定性、安全性、不差钱的可以使用阿里、腾讯等大厂的云服务器。 本人穷屌丝一枚&#xff0c;所以我用的是免…

gcc/g++的四步编译

目录 前言1.预处理&#xff08;进行宏替换&#xff09;2.编译&#xff08;生成汇编&#xff09;3.汇编&#xff08;生成二进制文件&#xff09;4. 链接 &#xff08;生成可执行文件&#xff09;a. 动态库 && 动态链接b. 静态库 && 静态链接c. 验证d. 动静态链接…

指针回顾.

指针的主要作用&#xff1a;提供一种间接访问数据的方法 1.地址:区分不同内存空间的编号 2.指针:指针就是地址,地址就是指针 3.指针变量:存放指针的变量称为指针变量,简称为指针 1.指针的定义 int *p NULL; int *q NULL; char *p NULL; double *p NUL…

前端面试题13(API请求方法)

在前端JavaScript中&#xff0c;进行API请求主要可以通过几种方式来实现&#xff0c;最常见的是使用XMLHttpRequest&#xff08;较旧的方法&#xff09;、fetch&#xff08;现代浏览器推荐方法&#xff09;以及使用第三方库如axios或jQuery.ajax等。 1. XMLHttpRequest 这是最…

springboot集成tika解析word,pdf,xls文件文本内容

介绍 Apache Tika 是一个开源的内容分析工具包&#xff0c;用于从各种文档格式中提取文本和元数据。它支持多种文档类型&#xff0c;包括但不限于文本文件、HTML、PDF、Microsoft Office 文档、图像文件等。Tika 的主要功能包括内容检测、文本提取和元数据提取。 官网 https…

开发个人Go-ChatGPT--5 模型管理 (二)

开发个人Go-ChatGPT–5 模型管理 (二) ChatGPT 这是该项目的最终效果&#xff0c;使用ollama的open-webui进行人与机器的对话功能&#xff0c;对话的后端服务则完全对接自己开发的Go项目。 如何实现呢&#xff1f;则通过这篇文章&#xff0c;一一给大家剖析后端的原理及功能…

html的作业

目录 作业题目 1.用户注册 A图 B代码 2.工商银行电子汇款单 A图 B代码 3.李白诗词 A图 B代码 4.豆瓣电影 A图 B代码 学习产出&#xff1a; 作业题目 1.用户注册 A图 B代码 <!DOCTYPE html> <html lang"zh"> <head><meta charset&qu…