Arthas快速入门
1.概述
Arthas(阿尔萨斯) 能为你做什么?
Arthas
是Alibaba开源的Java诊断工具,深受开发者喜爱。
当你遇到以下类似问题而束手无策时,Arthas
可以帮助你解决:
-
这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? -
我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? -
遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗? -
线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现! -
是否有一个全局视角来查看系统的运行状况? -
有什么办法可以监控到JVM的实时运行状态? -
怎么快速定位应用的热点,生成火焰图?
运行环境要求
Arthas
支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab
自动补全功能,进一步方便进行问题的定位和诊断
2.快速安装
2.1 在线安装(Linux也可以这样安装)–推荐
-
1.下载jar包
curl -O https://alibaba.github.io/arthas/arthas-boot.jar
-
2.运行
java -jar arthas-boot.jar
注:在运行第2条命令之前,先运行一个java进程在内存中,不然会出现找不到java进程的错误注意:如果cmd是管理员权限运行arthas-boot
,那么IDEA启动也是要管理员运行程序
- 3.查看安装好的目录
C:Usersadmin.arthaslib3.7.2arthas
2.2. 离线安装
-
1.从Maven仓库下载全量包
curl -O -L https://maven.aliyun.com/repository/public/com/taobao/arthas/arthas-packaging/3.7.2/arthas-packaging-3.7.2-bin.zip
- 2.解压后,在文件夹里有
arthas-boot.jar
,直接用java -jar
的方式启动
java -jar arthas-boot.jar
注意:如果是Linux,可以使用以下命令解压到指定的arthas目录
unzip -d arthas arthas-packaging-3.7.2-bin.zip
发现解压后内容和在线按照内容一致
3. 卸载
3.1. 在 Linux/Unix/Mac 平台
删除下面文件:
rm -rf ~/.arthas/
rm -rf ~/logs/arthas
3.2. Windows平台
直接删除user home下面的.arthas
和logs/arthas
目录
-
1.安装主目录 - 2.日志记录目录
4. 快速入门:attach一个进程
步骤
1. 准备代码
以下是一个简单的Java程序,每隔一秒生成一个随机数,再执行质因数分解,并打印出分解结果。代码的内容不用理会这不是现在关注的点。
public class MathGame {
private static Random random = new Random();
public int illegalArgumentCount = 0;
public List<Integer> primeFactors(int number) {
if (number < 2) {
++this.illegalArgumentCount;
throw new IllegalArgumentException("number is: " + number + ", need >= 2");
}
ArrayList<Integer> result = new ArrayList<Integer>();
int i = 2;
while (i <= number) {
if (number % i == 0) {
result.add(i);
number /= i;
i = 2;
continue;
}
++i;
}
return result;
}
public static void main(String[] args) throws InterruptedException {
MathGame game = new MathGame();
do {
game.run();
TimeUnit.SECONDS.sleep(1L);
System.out.println("在main函数中循环体内");
} while (true);
}
public void run() throws InterruptedException {
System.out.println("-- 计算中的函数 -- ");
try {
int number = random.nextInt() / 10000;
List<Integer> primeFactors = this.primeFactors(number);
MathGame.print(number, primeFactors);
}
catch (Exception e) {
System.out.println(String.format("illegalArgumentCount:%3d, ", this.illegalArgumentCount) + e.getMessage());
}
}
public static void print(int number, List<Integer> primeFactors) {
StringBuffer sb = new StringBuffer(number + "=");
for (int factor : primeFactors) {
sb.append(factor).append('*');
}
if (sb.charAt(sb.length() - 1) == '*') {
sb.deleteCharAt(sb.length() - 1);
}
System.out.println(sb);
}
}
注意:上面代码实际上就是math-game.jar
代码
2. 启动Demo
- 1.jar包运行
java -jar arthas-demo.jar
- 2.或者idea运行步骤一代码
3. 启动arthas
- 1.因为arthas-demo.jar进程打开了一个窗口,所以另开一个命令窗口执行arthas-boot.jar
- 2.选择要粘附的进程:arthas-demo.jar
- 3.如果端口号被占用,也可以通过以下命令换成另一个端口号执行
java -jar arthas-boot.jar --telnet-port 9998 --http-port -1
4. 通过浏览器连接arthas
Arthas目前支持Web Console,用户在attach成功之后,可以直接访问:http://127.0.0.1:3658/。
可以填入IP,远程连接其它机器上的arthas。
如果您觉得本文不错,欢迎关注,点赞,收藏支持,您的关注是我坚持的动力!
转载请注明出处,感谢支持!如果本文对您有用,欢迎转发分享!
原文始发于微信公众号(springboot葵花宝典):Arthas快速入门
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/247151.html