Java 诊断工具 arthas-boot 安装步骤及常用命令

news2024/12/24 3:14:18

arthas 是 Alibaba 开源的 Java 诊断工具,它的特点是使用方便,功能强大。最重要的是,arthas可以监察生产环境下的项目,使用的过程无需重启项目。

官方文档:https://alibaba.github.io/arthas

在这里插入图片描述

一、安装

第1步, 下载 arthas-boot.jar 文件:https://arthas.aliyun.com/arthas-boot.jar

第2步, 为了测试运行,在本地系统运行一个Java程序,比如在 IDEA 中写一个死循环并运行:

在这里插入图片描述

第3步, 打开cmd,进入arthas-boot.jar所在目录,执行命令

java -jar arthas-boot.jar

在这里插入图片描述

随后选择需要挂载的 Java 程序,这里我们要监控的是 Test3 这个类,所以在控制台输入1并回车。

在这里插入图片描述

等到出现以下 arthas 的图案,就说明运行成功了。

在这里插入图片描述

二、常用命令

2.1 dashboard 命令

可以直观的看到当前Java程序的线程CPU情况和状态,以及内存占用最多的对象信息

在这里插入图片描述

2.2 thread 命令

列出当前Java程序中的所有线程的信息。

thread

在这里插入图片描述

列出死锁线程的信息:

thread -b

在这里插入图片描述

2.3 jvm 命令

列出虚拟机相关信息,例如GC算法类型

[arthas@14500]$ jvm
...
...
----------------------------------------------------------------------------
 COMPILATION
----------------------------------------------------------------------------
 NAME                              HotSpot 64-Bit Tiered Compilers
 TOTAL-COMPILE-TIME                1306
 [time (ms)]

----------------------------------------------------------------------------
 GARBAGE-COLLECTORS	# 当前JVM使用了什么垃圾回收器
----------------------------------------------------------------------------
 PS Scavenge                       name : PS Scavenge
 [count/time (ms)]                 collectionCount : 12
                                   collectionTime : 101
 PS MarkSweep                      name : PS MarkSweep
 [count/time (ms)]                 collectionCount : 3
                                   collectionTime : 306

2.4 jad 命令

它是一个在线反编译指令。

反编译在某些情况下还是有用的,比如当团队编写的代码无误,但是项目上线后却发现代码输出错误,那么这时候就可以使用jad在线反编译某个文件,查看它最终的代码,从而定位问题所在。

在这里插入图片描述

2.5 redefine(在线修改class)

它支持在线重新加载某个class文件,这样就避免了需要项目重启带来的风险!

在生产环境中,不可以随意停止程序。当生产环境出现了某些低级错误(比如某个变量名字写错成其他变量,或数值由0改成了1)时,可以通过redefine 命令来在线修改class文件,从而临时解决掉这个低级错误。但这种解决方式是在内存层面上修改了class文件,等到项目重新启动时就会丢失更新。

因此,等到下次部署项目前,再在原项目中修改掉这个bug即可。

2.6 trace 命令

trace 包名 方法名

作用是:在方法调用链中,追踪某个方法A的运行时长。

它会显示方法A的调用情况,比如显示调用了方法B——耗时10ms,调用了方法C——耗时2000ms,在这个例子中,方法C很可能就是有问题的方法,因为它的调用时间太长了。

在这里插入图片描述

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

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

相关文章

Jpa与Druid线程池及Spring Boot整合(一): spring-boot-starter-data-jpa 搭建持久层

(一)Jpa与Druid连接池及Spring Boot整合作为持久层,遇到系列问题,下面一 一记录&#xff1a; pom.xml 文件中加入必须的依赖: <!--设置spring-boot依赖的版本 --> <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot…

Kafka 01——Kafka的安装及简单入门使用

Kafka 01——Kafka的安装及简单入门使用 1. 下载安装1.1 JDK的安装1.2 Zookeeper的安装1.2.1 关于Zookeeper版本的选择1.2.2 下载、安装Zookeeper 1.3 kafka的安装1.3.1 下载1.3.2 解压1.3.3 修改配置文件 2. 启动 kafka2.1 Kafka启动2.2 启动 kafka 遇到的问题2.2.1 问题12.2.…

2453. 摧毁一系列目标;2121. 相同元素的间隔之和;2075. 解码斜向换位密码

2453. 摧毁一系列目标 核心思想&#xff1a;找出与space取模一样的最多的数中的最小值。 2121. 相同元素的间隔之和 核心思想&#xff1a;与相同元素的等距离问题一模一样。我们首先将相同值的坐标统计出来&#xff0c;然后对于a[i]的和为s,对于a[i-1]的和为s&#xff0c;s-s…

ardupilot 为什么要采样四元数姿态控制

目录 文章目录 目录摘要1.姿态控制为什么要用到四元数2.四元数姿态控制摘要 本节主要说明清楚ardupilot姿态控制为什么要用到四元数,欢迎批评指正!!! 1.姿态控制为什么要用到四元数 对于ardupilot的姿态控制中主要用PID控制算法,姿态控制采用串级PID控制。主要包含:外环…

D. More Wrong Codeforces Round 890 (Div. 2) 1856D

Problem - D - Codeforces 题目大意&#xff1a;有一个隐藏的排列&#xff0c;给出其长度n&#xff0c;每次可以询问一个[l,r]区间内有多少逆序对&#xff0c;费用为&#xff0c;要求在总费用不超过的情况下输出最大值的下标 2<n<2000 思路&#xff1a;首先可以发现如…

录音转文字神器帮你轻松转写录音内容

你是否曾经需要将会议、讲座或采访录音转换成文字&#xff0c;却不知道如何转写录音内容更加快速准确&#xff1f;那你来对地方了&#xff01;录音转文字功能的诞生将让你的录音转写工作变得更加简单。如果你也还不清楚免费录音转文字软件有哪些的话&#xff0c;那现在就跟我一…

day2 开发环境平台搭建

Corter - M0存储器映射 SOC中CPU访问各个外部部件是通过每个部件的编号&#xff08;地址&#xff09;访问的&#xff1b; CPU给各个部件分配地址的过程称之为映射&#xff1b; Corter - M0 为32位&#xff0c;所以其给部件分配的地址范围为0 - 4Gb&#xff08;2^32&#xff0…

TZOJ 3100: 女生寝室的围墙 凸包

凸包模板题&#xff1a; 在平面上能包含所有给定点的最小凸多边形叫做凸包。 实际上可以理解为用一个橡皮筋包含住所有给定点的形态。 凸包用最小的周长围住了给定的所有点。如果一个凹多边形围住了所有的点&#xff0c;它的周长一定不是最小&#xff0c;如下图。根据三角不…

设备健康度评价实践--煤磨机

煤磨健康度评价说明 煤磨健康度评价模型 在以可靠性为中心的维护理论中,一般用健康度量化描述设备的健康状态,它是指在规定的时间和条件下,设备持续完成预定功能的能力大小,是表达设备或零件状态好坏的定量指标。 煤磨的健康状态评价原则是要求能够真实地反映磨机的健康状态…

lancet: 【推荐】--源码学习

一个全面、高效、可复用的go语言工具函数库&#xff1b; 可以学习源码的好的地方&#xff0c;这个是个工具库&#xff0c;建议最好的办法是 在项目中导入后&#xff0c;然后查看他的各个源代码进行学习使用 golangd中&#xff0c;查看导入包以及他的源代码&#xff1b; 中文…

农历日程提醒软件哪个好?安卓苹果通用的日程提醒软件

在日常生活中&#xff0c;有很多重要的日期都是按照农历&#xff08;阴历&#xff09;计算的&#xff0c;例如春节、七夕、中秋节等重要的传统节日、一些亲朋好友的生日、农村乡镇农历逢一、逢七赶集等。为了防止自己忘记这些重要的节日&#xff0c;提前做好准备&#xff0c;很…

【深度学习笔记】TensorFlow 常用函数

TensorFlow 提供了一些机器学习中常用的数学函数&#xff0c;并封装在 Module 中&#xff0c;例如 tf.nn Module 提供了神经网络常用的基本运算&#xff0c;tf.math Module 则提供了机器学习中常用的数学函数。本文主要介绍 TensorFlow 深度学习中几个常用函数的定义与用法&…

Flask 框架集成Bootstrap

前面学习了 Flask 框架的基本用法&#xff0c;以及模板引擎 Jinja2&#xff0c;按理说可以开始自己的 Web 之旅了&#xff0c;不过在启程之前&#xff0c;还有个重要的武器需要了解一下&#xff0c;就是著名的 Bootstrap 框架和 Flask 的结合&#xff0c;这将大大提高开发 Web …

【ROS】Ubuntu18.04安装Ros

Ubuntu18.04安装Ros 引言1 ROS安装&#xff08;一键式&#xff09;2 正常安装2.1 添加ROS软件源2.2 添加公钥2.3 更新2.4 安装ros2.5 初始化 rosdep2.6 设置环境2.7 安装rosinstall,便利的工具2.8 检验 3 rviz将bag数据可视化为点云3.1 打开ROS和rviz软件3.2 配置rviz软件可视化…

gpu-manager安装及测试

提示&#xff1a;GPU-manager安装为主部分内容做了升级开箱即用&#xff0c;有用请点收藏❤抱拳 文章目录 前言一、约束条件二、使用步骤1.下载镜像1.1 查看当前虚拟机的驱动类型&#xff1a; 2.部署gpu-manager3.部署gpu-admission4.修改kube-scheduler.yaml![在这里插入图片描…

Web Server市场占有率调查

目录 一、理论 1.Web Server市场占有率调查 一、理论 1.Web Server市场占有率调查 &#xff08;1&#xff09;netcraft ①查询 每月netcraft公司都会出一次调查报告 netcraft官方&#xff1a;Netcraft | Leader in Phishing Detection, Cybercrime Disruption and Websi…

Samba(二)

问题 Rocky Linux使用smbclient访问win11的共享文件时提示 Error NT_STATUS_IO_TIMEOUT 分析 通过测试&#xff0c;发现关闭windows公用网络防火墙时&#xff0c;可正常显示服务器端所分享出来的所有资源&#xff1b;进一步发现单独放行防火墙进站规则中的文件和打印机共享&a…

B树的插入与删除过程

B树的插入 原树&#xff1a; 插入key后&#xff0c;若导致原节点关键字数超过上限&#xff0c;则从中间位置&#xff08; ⌈ m 2 ⌉ \lceil\frac{m}{2}\rceil ⌈2m​⌉&#xff09;将关键字分成两部分&#xff0c;左部分包含的关键字放在原节点中&#xff0c;右部分包含的关键…

面试题:说说vue2的生命周期函数?说说vue3的生命周期函数?说说vue2和vue3的生命周期函数对比?

说说vue2的生命周期函数&#xff1f;说说vue3的生命周期函数&#xff1f;说说vue2和vue3的生命周期函数对比&#xff1f; 一、说说vue2的生命周期函数1.1 vue生命周期分为四个阶段、8个钩子1.1.1 beforeCreate 和 created 初始化阶段1.1.2 beforeMount 和 mounted 挂载阶段1.1.…

利用XLL文件投递Qbot银行木马的钓鱼活动分析

1概述 近期&#xff0c;安天CERT发现了一起利用恶意Microsoft Excel加载项&#xff08;XLL&#xff09;文件投递Qbot银行木马的恶意活动。攻击者通过发送垃圾邮件来诱导用户打开附件中的XLL文件&#xff0c;一旦用户安装并激活Microsoft Excel加载项&#xff0c;恶意代码将被执…