arthas线上问题检查思路

news2024/12/25 16:14:09

📢📢📢📣📣📣
哈喽!大家好,我是「奇点」,江湖人称 singularity。刚工作几年,想和大家一同进步🤝🤝
一位上进心十足的【Java ToB端大厂领域博主】!😜😜😜
喜欢java和python,平时比较懒,能用程序解决的坚决不手动解决😜😜😜

✨ 如果有对【java】感兴趣的【小可爱】,欢迎关注我

❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️
————————————————

如果觉得本文对你有帮助,欢迎点赞,欢迎关注我,如果有补充欢迎评论交流,我将努力创作更多更好的文章。
 

背景

是不是在实际开发工作当中经常碰到自己写的代码在开发、测试环境行云流水稳得一笔,可一到线上就经常不是缺这个就是少那个反正就是一顿报错抽风似的,线上调试代码又很麻烦,让人头疼得抓狂;而且debug不一定是最高效的方法,遇到线上问题不能debug了怎么办。原先我们Java中我们常用分析问题一般是使用JDK自带或第三方的分析工具如jstat、jmap、jstack、 jconsole、visualvm、Java Mission Control、MAT等。但此刻的你没有看错,还有一款神器Arthas工具着实让人吃惊,可帮助程序员解决很多繁琐的问题,使得加班解决线上问题成为过去的可能性大大提高。

定义

Arthas是一个Java诊断工具,由阿里巴巴中间件团队开源,目前已在Java开发人员中被广泛采用。Arthas能够分析,诊断,定位Java应用问题,例如:JVM信息,线程信息,搜索类中的方法,跟踪代码执行,观测方法的入参和返回参数等等。并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法的出入参,异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。简单的话:就是再不重启应用的情况下达到排查问题的目的。

安装与启动

下载arthas-boot.jar

curl -O https://arthas.aliyun.com/arthas-boot.jar
 

然后用java -jar的方式启动:

java -jar arthas-boot.jar
 

注意事项:

arthas-boot使用的jdk版本,需要与要监控的进程jdk版本保持一致,否则会启动失败。

使用指定jdk版本启动:

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

分析步骤

  1. 通过dashboard命令查看当前系统的实时数据,例如CPU占用率,heap占用率等;
  2. 如果有CPU占用异常,通过thread命令,查看CPU占用率高的线程的堆栈,找到对应的类和方法再进一步分析;
  3. 如有堆栈占用异常,在heap占用率高时,通过heapdump 命令下载heapdump文件到本地,分析占用内存高的未被回收的对象,再通过寻找创建对象的方法分析原因;
  4. 通过profiler命令,分析执行方法的CPU占用率;
  5. 通过trace命令,可以分析方法内部调用路径和输出方法路径上的每个节点上耗时,在耗时长的路径上思考优化方案;

常用命令

官方命令列表:

arthas.aliyun.com/doc/command…

dashboard命令

查看当前系统的实时数据,如CPU占用率,heap占用率等

trace 命令

trace com.xx.dso.service generateDsoExcel

方法内部调用路径,并输出方法路径上的每个节点上耗时

heapdump 命令

创建到指定文件夹下

heapdump --live /Users/xxx/Documents/dump.hprof
 

当我们拿到hprof文件后,该如何分析呢,这时候我们可以用到jdk自带的jhat命令进行分析。

创建成功后,我们就可以在指定文件夹下看到对应的dump文件,然后使用命令jhat dump.hprof,生成文件,成功后我们就可以通过IP+端口进行访问了

jhat dump.hprof

 如果报错端口被占用,可以指定端口打开

jhat -port 7001 dump.hprof

出现Started HTTP server on port 7000信息时,咱们就可以使用IP+port进行访问了。例如访问 localhost:7001

profiler命令

通过不断的采样,然后把收集到的采样结果生成火焰图。

//启动
$ profiler start  
Profiling started

//停止,并生成HTML格式的结果
$ profiler stop --format html
profiler output file: /xxx/arthas-output/20220727-145209.html
OK

 在arthas启动的状态下,可以通过浏览器访问http://localhost:3658/arthas-output/ 或启动位置的 arthas-output 下面查看 profiler 结果

常见问题

  1. 启动时:[ERROR] attach fail, targetPid: XXX

原因:异常退出,导致端口被占用,并且不能通过kill -9 来清除掉这个端口

解决方法:使用同一个端口启动,进入刚刚选择的进程,执行stop命令完全退出

后续会根据每一个场景的排查命令列举示例

参考文章

www.wdbyte.com/2019/11/art…

blog.fastthread.io/tag/heap-du…

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL -- 环境安装(CentOS7)

MySQL – 环境安装(CentOS7) 文章目录 MySQL -- 环境安装(CentOS7)一、环境安装1.卸载不必要的环境2.检查系统安装包3.卸载默认安装包4.获取MySQL官方yum源6.看看yum源能不能正常工作7.安装mysql服务 二、MySQL登录与配置1.启动My…

SSO系统设计框架搭建

SSO系统设计 目录概述需求: 设计思路实现思路分析1.SSO 框架的Spring,Spring boot 适配2.Spring,SpringBoot 关键字寻找3.maven helper 的使用4.异常排查 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , sh…

【广州华锐互动】利用VR开展施工现场安全培训,提高员工安全意识水平

随着科技的不断发展,虚拟现实(VR)技术已经逐渐渗透到各个领域,为我们带来了前所未有的沉浸式体验。在建筑施工行业,VR技术的应用也日益广泛,从设计、施工到管理,都可以看到VR技术的身影。而在这…

斯坦福发布 最新 GPT 模型排行榜 AlpacaEval

文章目录 📌提炼❓什么是 AlpacaEval🔎AlpacaEval 排行榜 包含的 测试 模型 和数据💯在不同的测试集上各个大模型的能力评分🚀AlpacaEval Leaderboard 大模型的能力综合评分💼 普遍国内白领 如何快速应用 大模型&#…

nginx部署vue项目(访问路径加前缀)

nginx部署vue项目(访问路径加前缀) nginx部署vue项目,访问路径加前缀分为两部分: (1)修改vue项目; (2)修改nginx配置; vue项目修改 需注意,我这是vue-cli3配置&#x…

vtk简单介绍、渲染流程、简单示例

一、vtk简单介绍 Vtk(visualization toolkit)是一个开源的免费软件系统,主要用于三维计算机图形学、图像处理和可视化。 二、vtk渲染流程 流程图如下: 1.vtkSource 数据源 各个类型的图像原始数据。 2.vtkFilter 数据过滤器 …

Python: 定时器(Timer)简单实现

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 项目分析中发现有网站下载过程中需要发送心跳指令,复习下定时器,其与javascript中实现方法类似。 其原理为执行函数中置定时函数Timer(),递归调用自己,看来实现方法比较拙劣。 …

Mac Intellij Idea get/set方法快捷键

Control Retrun(回车键) Command n 参考: Mac Intellij Idea get/set方法快捷键-CSDN博客

欣旺达动力启动IPO:凭何撑住超350亿市值?

10月17日消息,欣旺达动力已于10月15日同中信证券签署上市辅导协议,正式启动IPO进程。欣旺达动力的分拆上市计划是今年7月公布的,当时欣旺达集团计划将欣旺达动力分拆至深交所创业板上市。本次分拆完成后,欣旺达仍将维持对欣旺达动…

Filter与Listener(过滤器与监听器)

1.Filter 1.过滤器概述 过滤器——Filter,它是JavaWeb三大组件之一。另外两个是Servlet和Listener 它可以对web应用中的所有资源进行拦截,并且在拦截之后进行一些特殊的操作 在程序中访问服务器资源时,当一个请求到来,服务器首…

Ganache本地测试网如何在远程环境中进行访问和操作

文章目录 前言1. 安装Ganache2. 安装cpolar3. 创建公网地址4. 公网访问连接5. 固定公网地址 前言 Ganache 是DApp的测试网络,提供图形化界面,log日志等;智能合约部署时需要连接测试网络。 Ganache 是一个运行在本地测试的网络,通过结合cpol…

ELK架构Logstash的相关插件:grok、multiline、mutate、date的详细介绍

文章目录 1. grok (正则捕获插件)1.1 作用1.2 正则表达式的类型1.2.1 内置正则表达式1.2.2 自定义正则表达式 2. mutate (数据修改插件)2.1 作用2.2 常见配置选项2.3 应用实例 3. multiline (多行合并插件)3.1 作用3.2 常用配置项及示例3.2.1…

babel6使用ES2020最新js语法

babel6使用ES2020最新js语法 Babel 6 原本是不支持 ES2020 语法,因为它是在 Babel 7 中引入的。如果您想使用 ES2020 语法,您需要将 Babel 6 升级到 Babel 7 或更高版本(推荐),当然也可以在bebel6中安装支持某个语法的plugin,比如你想使用 ES2020 中的可…

react仿照antd progress实现可自定义颜色的直角矩形进度条

可传颜色、带滑块的直角进度条 很歹毒的UI设计&#xff08;真的很丑&#xff09; 实现&#xff1a; class RankProgress extends React.Component {render() {const { percent, progressColor } this.props;return (<div className{styles.progress}><div classNam…

SpringSecurity+ Oauth2.0+JWT 0-1

这里写目录标题 准备工作准备SQL添加用户添加依赖准备UserInfoUserMapperUserServiceUserServiceImpl配置SpringDataUserDetailsService 授权服务器&#xff1a;AuthorizationServer配置客户端详细信息管理令牌定义TokenConfig定义AuthorizationServerTokenServices 令牌访问端…

百分点科技再度亮相GITEX全球大会

10月16-20日&#xff0c;全球最大科技信息展会之一 GITEX Global 2023在迪拜世贸中心开展&#xff0c;本届展会是历年来最大的一届&#xff0c;吸引了来自180个国家的6,000家参展商和180,000名技术高管参会。 百分点科技作为华为生态合作伙伴&#xff0c;继去年之后再度参展&a…

六顶思考帽思维模型

六顶思考帽思维模型 由爱德华德博诺博士开发的一种思维训练模式&#xff0c;也是一个全面思考问题的模型。 模型介绍 六顶思考帽对人们思考以及讨论问题所起到的帮助在于&#xff1a; 角色扮演-思维的最大限制就是“自我防卫”&#xff0c;这些帽子使我们敢说&#xff0c;而不…

Mask R-CNN训练自己的数据集

数据集制作 通常使用labelme来制作实例分割数据集&#xff0c;也有教程和代码来转换成COCO数据集。labelme项目地址为&#xff1a;https://github.com/wkentaro/labelme/tree/main 安装labelme conda create --namelabelme python3 conda activate labelme pip install labe…

纳米软件干货分享|芯片测试技术知识科普

芯片测试是确保芯片在各种条件下能够正常工作的关键环节。测试人员对芯片进行各种性能和可靠性的检测&#xff0c;以确保产品达到预期的性能指标和可靠性标准。 一、芯片测试的目的 芯片测试的主要目的是在投入应用之前发现和纠正芯片的潜在问题&#xff0c;防止不良品流入客…

c++_learning-对象模型探索

c对象模型探索 深入理解面向对象&#xff1a;c类对象模型&#xff1a;类中的成员&#xff1a;对象的内存大小&#xff1a;类对象内存的组成&#xff1a;不在对象内存中存放的成员&#xff1a; 类与类对象的内存分配&#xff1a;数据部分和代码部分&#xff1a;类对象占用的内存…