Arthas在线java进程诊断工具在线调试神器详解

Arthas在线java进程诊断工具在线调试神器详解

Arthas是阿里开源的一款基于Java的实时诊断和监控工具。它可以在生产环境中实时诊断Java线程、查看应用内部信息、动态修改变量等,对于线上问题的排查和性能优化非常有帮助。本文主要介绍Arthas的使用方法,包括Arthas的安装、启动和基本功能的应用。

安装Arthas

Arthas支持多种安装方式,包括Maven、Docker等,这里以Maven方式为例。

  1. 在项目中添加arthas依赖

xml
<dependency>
<groupId>com.taobao.arthas</groupId>
<artifactId>arthas-client</artifactId>
<version>3.2.2</version>
</dependency>

  1. 使用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进程信息

  1. 使用以下命令来启动Arthas:

bash
java -jar arthas-boot.jar

  1. 使用以下命令来查看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(性能分析)

  1. 使用以下命令启动Arthas:

bash
java -jar arthas-boot.jar

  1. 使用以下命令来开始性能分析:

bash
profiler start

  1. 运行相应的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技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • MySQL: LEAVE Statement

    https://www.techonthenet.com/mysql/loops/leave.php   This MySQL tutorial explains how to use the LEAVE statement in MySQL with syntax and examples. Description In MySQL, the LEAVE …

    MySQL 2023年4月13日
    00
  • Trafodion和Virtuoso的区别

    Trafodion和Virtuoso都是数据库管理系统,但它们有很大的不同之处。 Trafodion是一个基于Apache Hadoop的开源的分布式SQL数据库管理系统。它支持传统的SQL语言和事务处理,并提供了对大规模数据的分布式查询和数据仓库功能的支持。Trafodion可以与Hadoop、Spark和其他Hadoop生态系统工具集成,支持多种数据类型…

    database 2023年3月27日
    00
  • CentOS 7下使用rpm包安装mysql 5.7.18

    下面是CentOS 7下使用rpm包安装mysql 5.7.18的完整攻略,包含以下步骤: 步骤1:下载mysql的rpm包 首先,我们需要到mysql官网下载对应版本的rpm包。在本例中,我们需要下载mysql 5.7.18的rpm包,可以在以下网址中下载: https://dev.mysql.com/downloads/mysql/5.7.html 我们…

    database 2023年5月22日
    00
  • PHP中MongoDB数据库的连接、添加、修改、查询、删除等操作实例

    下面是关于PHP中MongoDB数据库的连接、添加、修改、查询、删除等操作实例的完整攻略: 连接MongoDB数据库 在 PHP 中使用 MongoDB,需要使用 MongoDB 扩展。可以通过以下方式检查是否已经安装: <?php // 检查 MongoDB 扩展是否已安装 if (!extension_loaded(‘mongodb’)) { ec…

    database 2023年5月21日
    00
  • Oracle中ROW_NUMBER()OVER()函数用法实例讲解

    下面是详细讲解“Oracle中ROW_NUMBER()OVER()函数用法实例讲解”的攻略。 什么是ROW_NUMBER()OVER()函数 ROW_NUMBER() OVER() 函数是 Oracle SQL 中用于对查询结果进行分组排序的一种函数。 在数据分析中,我们常常需要按照某些字段对数据进行排序,然后给每条数据分配一个排名,这时就可以使用 ROW_…

    database 2023年5月21日
    00
  • 如何在Python中查询Redis数据库中的数据?

    以下是在Python中查询Redis数据库中的数据的完整使用攻略。 使用Redis数据库的前提条件 在使用Python连接Redis数据库之前,需要确保已经安装Redis数据库,并已经创建使用的数据库,同时需要安装Python的驱动程序,例如redis。 步骤1:导入模块 在Python中使用redis模块连接Redis数据库。以下是导入redis模块的基本…

    python 2023年5月12日
    00
  • MySQL事务日志(redo log和undo log)的详细分析

    下面是详细分析 MySQL 事务日志的攻略。 1. 什么是事务日志? 事务日志(transaction log)是一种用于存储数据库中发生的所有修改操作的日志文件。事务日志可以用于恢复数据库,即使在宕机等异常情况下也可以保证数据的一致性。 MySQL 的事务日志中包括了redo log(重做日志)和undo log(撤销日志)两部分。 2. redo log…

    database 2023年5月22日
    00
  • SQL Server 索引维护sql语句

    当我们在 SQL Server 中创建了索引之后,为了保证索引的性能,需要进行定期的维护。本文将分享 SQL Server 索引维护 sql 语句的完整攻略。 索引维护的目的 在了解如何维护索引之前,我们应该先了解一下为什么需要进行索引维护。在 SQL Server 中,如果索引出现了碎片,那么查询索引所对应的表时,就会出现性能问题。碎片是指索引中页的顺序不…

    database 2023年5月21日
    00
合作推广
合作推广
分享本页
返回顶部