Arthas(阿尔萨斯) 的安装与使用

2023-10-27

arthas官方文档:https://arthas.aliyun.com/doc/index.html点击此处进入

是Alibaba开源的Java诊断工具,深受开发者喜爱。在线排查问题,无需重启;动态跟踪Java代码;实时监控JVM状态。
Arthas 支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。

1.下载安装

authas是一个jar包,可以直接下载后运行,推荐使用 arthas-boot.jar 。下载arthas-boot.jar,然后用java -jar的方式启动:
wget https://alibaba.github.io/arthas/arthas-boot.jar

在这里插入图片描述

2.启动authas

启动JAVA进程

启动之前确保有一个 java进程服务,然后再启动你的arthas。
在这里插入图片描述

启动arthas

java -jar arthas-boot.jar
在这里插入图片描述

出现上图 标识,说明启动成功。

启动报错

在这里插入图片描述

注:通过上面也分析到,我们启动arthas之前,必须要先启动我们的目标进程,否则arthas可能无法启动。

打印帮助信息

java -jar arthas-boot.jar -h
在这里插入图片描述

3.常用命令

启动成功之后,可以执行命令。
dashboard:观察每个线程及所占的CPU。
在这里插入图片描述

数据说明
ID: Java级别的线程ID没有ID及状态等信息(显示ID为-1)   
NAME: 线程名  GROUP: 线程组名
PRIORITY: 线程优先级, 1~10之间的数字,越大表示优先级越高 
STATE: 线程的状态,分为RUNNABLE 运行中TIMED_WAITIN 调用了以下方法的线程会进入TIMED_WAITING:Thread#sleep()Object#wait() 并加了超时参数Thread#join() 并加了超时参数LockSupport#parkNanos()LockSupport#parkUntil()
WAITING 当线程调用以下方法时会进入WAITING状态:Object#wait() 而且不加超时参数Thread#join() 而且不加超时参数LockSupport#park()
BLOCKED 阻塞,等待锁
CPU%: 线程消耗的cpu占比,采样100ms,将所有线程在这100ms内的cpu使用量求和,	再算出每个线程的cpu使用占比。    
TIME: 线程运行总时间,数据格式为分:秒
INTERRUPTED: 线程当前的中断位状态    
DAEMON: 是否是daemon线程Memory JVM内存信息  used 已使用内存  total总计  max 最大  usage使用比
GC 垃圾回收   Runtime 运行环境

JVM内部线程包括下面几种:
JIT编译线程: 如 C1 CompilerThread0, C2 CompilerThread0
GC线程: 如GC Thread0, G1 Young RemSet Sampling其它内部线程: 如VM Periodic Task Thread, VM Thread, Service Thread

thread: 查看那些进程占用CPU。
在这里插入图片描述

thread命令用于查看当前线程信息,查看线程堆栈,它有如下参数:
-id  查看指定id线程没有ID及状态等信息(显示ID为-1) 
-n [num] 查看当前最忙的几个线程
-b   找出当前阻程的线程,如果有死锁,会有红色的字提醒着,这个阻塞的	线程已经被另外一个线程阻塞。
-all  显示所有匹配的线程
-i [num]    查看[num]ms线程CPU时间
-state  查看指定状态的线程    如查看WAITING状态   thread -state WAITING

jmap -histo 进程号:查看那些进程占内存
jmap -histo 进程号 | head -20 :查看那些进程占内存,获取前20行。
在这里插入图片描述

GC相关命令:
jps :查看运行进程及进程号。

在这里插入图片描述

jinfo 进程号 :查看进程详情。
在这里插入图片描述

jstat -gc 进程号 : 查看GC 信息
在这里插入图片描述

4.卸载

在 Linux/Unix/Mac 平台
删除下面文件:

rm -rf ~/.arthas/
rm -rf ~/logs/arthas

Windows平台直接删除user home下面的.arthas和logs/arthas目录

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Arthas(阿尔萨斯) 的安装与使用 的相关文章

  • 如何回忆上一个 bash 命令的参数?

    Bash 有没有办法回忆上一个命令的参数 我通常这样做vi file c其次是gcc file c Bash 有没有办法回忆上一个命令的参数 您可以使用 or 调用上一个命令的最后一个参数 Also Alt can be used to r
  • 使用 --prof 选项创建多个日志文件而不是一个 v8.log 的节点

    我正在尝试使用 prof 选项来分析我的 Node 应用程序 但我发现不是一个单一的 v8 log 文件 而是使用诸如isolate 0x9582b40 v8 log isolate 0xa1cab78 v8 6049 等前缀创建的多个文件
  • 从哪里获取 iostream.h

    我正在尝试在 Linux 中做一些事情 但它抱怨找不到 iostream h 我需要安装什么才能获取此文件 这个标准头的正确名称是iostream没有扩展名 如果您的编译器仍然找不到它 请尝试以下操作 find usr include na
  • Java时区混乱

    我正在运行 Tomcat 应用程序 并且需要显示一些时间值 不幸的是 时间快到了 还有一个小时的休息时间 我调查了一下 发现我的默认时区被设置为 sun util calendar ZoneInfo id GMT 08 00 offset
  • 命名互斥体的 Mono 替代方案

    在 Windows NET 上 命名的互斥体可用于同步多个进程 不幸的是 Mono 在 Linux 上不太支持这一点 他们的发行说明 http www mono project com Release Notes Mono 2 8 Shar
  • C++ Linux GCC 应用程序中的 GUID

    我有很多服务器运行这个 Linux 应用程序 我希望他们能够生成一个碰撞概率较低的 GUID 我确信我可以从 dev urandom 中提取 128 个字节 这可能没问题 但是有没有一种简单易用的方法来生成与 Win32 更等效的 GUID
  • 通过名称获取进程ID

    我想在 Linux 下获得一个给定其名称的进程 ID 有没有一种简单的方法可以做到这一点 我还没有在 C 上找到任何可以轻松使用的东西 如果追求 易于使用 char buf 512 FILE cmd pipe popen pidof s p
  • 每个虚拟主机的错误日志?

    在一台运行 Apache 和 PHP 5 的 Linux 服务器上 我们有多个带有单独日志文件的虚拟主机 我们似乎无法分离 phperror log虚拟主机之间 覆盖此设置
  • 如何使用 PyAudio 选择特定的输入设备

    通过 PyAudio 录制音频时 如何指定要使用的确切输入设备 我的电脑有两个麦克风 一个内置 一个通过 USB 我想使用 USB 麦克风进行录音 这流类 https people csail mit edu hubert pyaudio
  • Linux 上的“软/硬 nofile”是什么意思

    当我尝试在RedHat EL5上安装软件时 我得到了错误 软 硬nofile的期望值是4096 而默认值是1024 我设法增加了这个数字 但我不知道参数是什么 他们指的是软链接和硬链接吗 我改变的方法是 a 修改 etc security
  • 使用 .htaccess 启用 PHP 短标签

    我在自己的 Centos 服务器上设置了 Apache 并具有多个虚拟 Web 服务器 并且我希望仅为位于以下位置的其中一个 Web 服务器启用 PHP 短标记 var www ostickets html 我可以通过添加成功启用短标签sh
  • PHP mail() 函数不发送邮件

    我有一个小问题 我正在使用一个工作脚本 在我的测试帐户 共享服务器上工作 使用 mail 函数通过 PHP 发送邮件 我刚刚得到了一个专用服务器 但我还无法让该功能发挥作用 在过去的 10 个小时左右的时间里 我阅读了有关 BIND 用于
  • 如何在C程序中直接改变显存映射来绘制像素(无需库函数)

    是否可以通过使用 C 程序更改 RAM 中屏幕 视频即监视器 内存映射中的值来显示黑点 我不想使用任何库函数 因为我的主要目标是学习如何开发简单的操作系统 我尝试访问起始屏幕内存映射 即 0xA0000 在 C 中 我尝试运行该程序 但由于
  • 删除 Python 中某些操作的 root 权限

    在我的 Python 脚本中 我执行了一些需要 root 权限的操作 我还创建并写入文件 我不想由 root 独占所有 而是由运行我的脚本的用户独占所有 通常 我使用以下命令运行脚本sudo 有办法做到上述吗 您可以使用以下方式在 uid
  • X 按键/释放事件捕获,与焦点窗口无关

    我想记录所有传入的按键事件 无论哪个窗口处于焦点状态或指针位于何处 我编写了一个示例代码 它应该捕获当前焦点窗口的按键事件 include
  • “./somescript.sh”和“. ./somescript.sh”有什么区别

    今天我按照一些说明在 Linux 中安装软件 有一个需要首先运行的脚本 它设置一些环境变量 指令告诉我执行 setup sh 但是我执行时犯了一个错误 setup sh 所以环境没有设置 最后我注意到了这一点并继续进行 我想知道这两种调用脚
  • 使用 hcitool 扫描低功耗蓝牙?

    当我运行此命令时 BLE 设备扫描仅持续 5 秒 sudo timeout 5s hcitool i hci0 lescan 输出显示在终端屏幕中 但是 当我将输出重定向到文件以保存广告设备的地址时 每次运行该命令时 我都会发现该文件是空的
  • 使用 terminfo 的终端颜色?

    我正在编写一个 C 类 允许在终端中使用颜色 我希望它适用于每个终端 在支持真彩色 24 位 的终端上打印 在支持它的终端上具有 256 色 6x6x6 其他都是基本的 16 种颜色 我曾经使用 termcap 编写过一次 C 函数 并且我
  • 期待、互动,然后再次期待

    有几篇关于相同内容的帖子 但我仍然无法使我的期望脚本正常工作 我的目的是自动化一切 但保留用户输入的密码 所以脚本有 3 个部分 自动登录 给予用户交互以输入密码 将控制权交还给 Expect 脚本以继续工作 所以我有一个将生成的脚本 其中
  • 将 bash 脚本作为守护进程运行

    我有一个脚本 它每 X 次运行我的 PHP 脚本 bin bash while true do usr bin php f my script php echo Waiting sleep 3 done 我怎样才能将它作为守护进程启动 要从

随机推荐

  • python接口自动化(十二)--https请求(SSL)(详解)

    简介 本来最新的requests库V2 13 0是支持https请求的 但是一般写脚本时候 我们会用抓包工具fiddler 这时候会 报 requests exceptions SSLError SSL CERTIFICATE VERIFY
  • MySQL简单命令和SELECT查询,给字段起别名【MySQL数据库】

    Java养成计划 学习打卡第六十四天 内容导航 数据库的相关操作 数据库的导入 查看导入数据库中的表 查看表中的数据 查看表的基本结构 简化 查看表的结构 详细 查看mysql数据库的版本号 查询当前使用的数据库 退出mysql SQL查询
  • C#常见的两种错误

    一 WindowsFormsApplication2 Form1 不包含 Form1 Load 的定义 并且找不到可接受类型为 WindowsFormsApplication2 Form1 的第一个参数的扩展方法 Form1 Load 是否
  • 小程序上传发布

    1 上传发布 一个小程序从开发完到上线一般要经过 预览 gt 上传代码 gt 提交审核 gt 发布等步骤 2 预览 使用开发者工具可以预览小程序 帮助开发者检查小程序在移动客户端上的真实表现 点击开发者工具顶部操作栏的预览按钮 开发者工具会
  • Linux终端退出程序不退出解决方案(nohup/screen)

    终端异常退出后 后台进程不关闭的解决办法 1 使用nohup命令 nohup
  • android:installLocation简析

    文章来源 http www cnblogs com Lefter archive 2012 03 07 2383962 html 在Froyo android 2 2 API Level 8 中引入了android installLocat
  • vue 动态面包屑 通过面包屑带参数跨级跳转 面包屑动态标题 多级路由嵌套设置默认页面和隐藏左侧导航栏显示

    面包屑 实现效果 可以通过面包屑进行跨级跳转 以下为我的面包屑组件 breadcrumb vue
  • React:select受控

    import React from react class Selector extends React Component constructor super this state val
  • pandas安装踩坑

    pandas安装踩坑 已有环境 安装问题 最后 重点来了 解决方案 总结 已有环境 win7 python3 8 1 原来用的python2 6 pip装的时候它说快不维护更新了 就把python3也给装上了 pip 20 0 2 安装问题
  • HSQLDB 试用

    1 先试用服务器模式 1 下载hsqldb 解压并进入该目录 创建data目录 2 创建数据库 java cp lib hsqldb jar org hsqldb Server database 0 file test1 dbname 0
  • 机器学习-情感分析小案例

    对发帖情感进行分析 字段说明 Announce ID字段代表用户ID User Name字段代表用户名 topic字段代表发帖主题 body字段代表发帖内容 post type字段代表发帖话题是否与工作相关 sentiment字段表明发帖情
  • Layui框架标签展示,用复选框动态控制标签增加和删除

    比较冷门的功能 纪录一下 先看效果图 看大家有没有类似的需求可以照搬 1表格展示 2 表单添加 3 复选框控制添加和取消生成标签 讲一下逻辑 点击新建标签 显示or隐藏标签选择框 标签列表是调用后台接口动态生成的 上代码 1 div cla
  • Python中的import

    Python中的import 第三方包 如selenium 放置在 python27 Lib site packages 安装 python setup py install python 自带的包 unittest json 放置在 py
  • Java 基础系列(二十一) --- Servlet 项目的搭建和部署

    背景知识 Tomcat 是一个 HTTP 服务器 其开放了一组 API 可以供我们程序猿进行使用 这组 API 就是 Servlet Servlet 1 Servlet 项目的创建 2 Servlet 项目的部署 2 1 本地部署 2 2
  • epic如何修改着色器缓存路径

    1 我们先找到缓存路径存放位置 C Users Administrator AppData Local UnrealEngine Common DerivedDataCache 可以自行删除 2 我们修改缓存位置 1 找到文件 E Epic
  • 版本管理可视化工具GitKraKe安装

    资源下载地址 https download csdn net download u012796085 87953404 1 解压后安装GitKrakenSetup 7 5 5 exe 2 命令窗口进入GitKraken存放目录 分别执行以下
  • C语言:用C语言实现进制转换

    这两天做题遇见了进制转换的问题 在网上看了他人的想法后自己的一些实践 目录 关于进制转换的问题和思考 1 将十进制以下的数据转换为十进制 2 将十进制的数据转换为十进制以上 3 十六进制转换成十进制 关于进制转换的问题和思考 1 高于十进制
  • 【知识学习】Git:如何利用Git实现Matlab代码版本管理

    目录 1 版本控制 1 1 版本控制是什么 1 2 常见的版本控制器 2 Git环境配置 2 1 软件下载 2 2 Git配置 3 Git 基本理论 4 Git项目搭建 4 1 本地搭建仓库 4 2 使用码云 Github 5 Git分支常
  • Arduino教程四——u8g2库OLED屏幕显示

    1 功能 u8g2库OLED屏幕显示英文 OLED 0 96寸 128X64 对于这几个参数进行说明 0 96指的是屏幕的显示尺寸0 96inch 128 64指的是屏幕的分辨率为128 64 128列64行 u8g2 屏幕显示 固定搭配
  • Arthas(阿尔萨斯) 的安装与使用

    arthas官方文档 https arthas aliyun com doc index html点击此处进入 是Alibaba开源的Java诊断工具 深受开发者喜爱 在线排查问题 无需重启 动态跟踪Java代码 实时监控JVM状态 Art