通过Arthas监控诊断线上运行的程序

发布于:2022-12-27 ⋅ 阅读:(554) ⋅ 点赞:(0)

一般Java程序在服务器运行时,如果我们采用的是Oracle的JDK,则可以通过JVisualVM、jmc、JConsole等JDK提供的监控工具来对运行的程序做监控、分析、诊断;即使运行环境没有图形界面(无图形界面的Linux)时,仍可通过XManager中将JVisualvm重定向到一个Windows桌面也是可以监控的,参见【文章】; 但是如果程序运行环境没有采用的OpenJDK的话则没有这些监控工具可用; 此时就可以通过Arthas工具来实现对线上正在运行的程序做监控、分析、诊断; 

还有一种情况,虽然是Windows环境,采用的也是Oracle的JDK,但是JVisualVM、jmc、JConsole等JDK提供的监控工具都不显示本机运行的java进程,以管理员身份运行也不行,此时就可以采用Arthas的as.bat [进程ID]来实现监控java程序

Arthas官方网站

Arthas下载地址

以Windows为例来演示,Linux也是一样的(只有启动脚本是.sh,Windows是.bat)

一、下载Arthas运行环境

参照上图,下载arthas-bin.zip; 

二、获取目标运行程序的进程ID

进程ID为1564

三、启动Arthas监控1564进程

第一次启动前要设置好JAVA_HOME的系统环境变量

#D:\work\soft\arthas-bin是arthas-bin.zip的解压目录
D:\work\soft\arthas-bin>as.bat 1564 

回车后即可进入arthas命令行操作界面

#执行dashboard命令后会每少刷新一次,按Ctrl+C退出dashboard,回到arthas命令模式
[arthas@1564]$ dashboard 

 四、[重点]导出运行程序的堆栈信息到txt文本文件中

[arthas@1564]$ thread -n 1000 >> D:/work/soft/arthas-bin/thread-dump.txt  

   五、[重点]输出运行程序的所有线程状态

 更多的用法请参见Arthas在线文档https://arthas.aliyun.com/doc/


网站公告

今日签到

点亮在社区的每一天
去签到