Arthas在线java进程诊断工具在线调试神器详解
Arthas是阿里开源的一款基于Java的实时诊断和监控工具。它可以在生产环境中实时诊断Java线程、查看应用内部信息、动态修改变量等,对于线上问题的排查和性能优化非常有帮助。本文主要介绍Arthas的使用方法,包括Arthas的安装、启动和基本功能的应用。
安装Arthas
Arthas支持多种安装方式,包括Maven、Docker等,这里以Maven方式为例。
- 在项目中添加arthas依赖
xml
<dependency>
<groupId>com.taobao.arthas</groupId>
<artifactId>arthas-client</artifactId>
<version>3.2.2</version>
</dependency>
- 使用Maven打包生成可执行jar
xml
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<classifier>exec</classifier>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
启动Arthas
使用以下命令启动Arthas:
java -jar arthas-boot.jar
如果需要查看进程列表,可以使用以下命令:
ps
Arthas基本功能
Arthas提供了丰富的功能,这里介绍其中的几项。
查看Java进程信息
使用以下命令来查看Java进程的信息:
dashboard
查看类信息
使用以下命令来查看类信息:
class
举个例子,我想查看java.lang.String
的信息,可以使用以下命令:
class java.lang.String
查看函数信息
使用以下命令来查看函数信息:
method
举个例子,我想查看java.lang.String
类的indexOf
函数,可以使用以下命令:
method java.lang.String indexOf
Profiler(性能分析)
使用以下命令来进行性能分析:
profiler start
使用以下命令来查看性能分析结果:
profiler stop && profiler
示例说明
示例一:查看Java进程信息
- 使用以下命令来启动Arthas:
bash
java -jar arthas-boot.jar
- 使用以下命令来查看Java进程的信息:
bash
dashboard
输出结果如下:
```
[ 1F1C] [dashboard] java -jar xxx.jar
Waiting for application to start, Ctrl-C to interrupt.
[ 1F45] [dashboard]
Arthas 內部命令:
KEYWORD COMMAND DESCRIPTION
dashboard Display the connection status, The target process info, instrumentation info 显示连接状态、目标进程信息、instrumentation的信息
help Display the help summary or command manual 显示帮助信息
history Display the command history 显示命令历史记录
...
```
示例二:Profiler(性能分析)
- 使用以下命令启动Arthas:
bash
java -jar arthas-boot.jar
- 使用以下命令来开始性能分析:
bash
profiler start
- 运行相应的Java程序,停止性能分析:
bash
profiler stop && profiler
输出结果可能如下所示:
Time: 100ms
Thread STATISTICS CPU(ms) SELF(ms) INVOKE_COUNT LATENCY(ms)
pool-1-thread-8 com.hkc.model.UserService.getUserList(int,int) 16.67 16.67 1 69
pool-1-thread-9 com.hkc.model.UserService.getUserList(int,int) 16.67 16.67 1 76
...
经过性能分析后,可以知道哪些函数比较耗费时间,对于性能优化非常有帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Arthas在线java进程诊断工具在线调试神器详解 - Python技术站