java线上项目排查,Arthas简单上手

简介: java线上项目排查,Arthas简单上手

Arthas 是Alibaba开源的Java诊断工具。参考:arthas

当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:

    1. 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
    2. 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
    3. 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
    4. 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
    5. 是否有一个全局视角来查看系统的运行状况?
    6. 有什么办法可以监控到JVM的实时运行状态?
    7. 怎么快速定位应用的热点,生成火焰图?

    Arthas支持JDK 6+,支持Linux/Mac/Winodws,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。

    1、安装(Linux):

    curl -L https://alibaba.github.io/arthas/install.sh | sh

    image.gif

    2、启动:

    ./as.as

    image.gif

    image.png

    序号后的数值(如:15075)为当前服务器上的进程PID。选择你要排查的项目进程,选择序号(如:1):

    image.png

    则进入到arthas交互页面。

    3、常用命令:

    3.1)“上帝视角”,即Dashboard。对当前项目的数据监控。

    image.png

    3.2)thread。查看当前线程信息,查看线程的堆栈。

    thread:查看所有线程。

    thread -n 5:查看最忙(CPU使用率最高)的5条线程。

    thread -b:找出当前阻塞其他线程的线程。

    thread -state:查看指定状态的线程。

    image.png

    3.3)jad。反编译class。

    jad com.icode.controller.VersionController

    image.gif

    image.png

    3.4) watch。观察指定方法的调用情况。能观察到的范围为:返回值抛出异常入参,通过编写 OGNL 表达式进行对应变量的查看。

    如查看某个方法的返回值:

    watch 全路径类名 方法名 returnObj

    image.gifimage.png

    3.5) trace。输出方法路径上的每个节点上耗时。

    trace 全路径类名 方法名


    image.png

    3.6)jvm。查看当前JVM信息。

    image.png

    4、中断、退出:

       4.1)使用ctrl+c中断artahs执行。

       4.2)使用 exit 退出arthas。

    此外,arthas还提供web console。通过浏览器连接arthas。

    其他常用命令,以及用法参考官方文档。 这里只展示几个测试用的简单上手命令。以供以后查阅。

    相关文章
    |
    17天前
    |
    NoSQL Java 关系型数据库
    Liunx部署java项目Tomcat、Redis、Mysql教程
    本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
    95 26
    |
    29天前
    |
    XML Java 测试技术
    从零开始学 Maven:简化 Java 项目的构建与管理
    Maven 是一个由 Apache 软件基金会开发的项目管理和构建自动化工具。它主要用在 Java 项目中,但也可以用于其他类型的项目。
    48 1
    从零开始学 Maven:简化 Java 项目的构建与管理
    |
    28天前
    |
    Java
    Java项目中高精度数值计算:为何BigDecimal优于Double
    在Java项目开发中,涉及金额计算、面积计算等高精度数值操作时,应选择 `BigDecimal` 而非 `Double`。`BigDecimal` 提供任意精度的小数运算、多种舍入模式和良好的可读性,确保计算结果的准确性和可靠性。例如,在金额计算中,`BigDecimal` 可以精确到小数点后两位,而 `Double` 可能因精度问题导致结果不准确。
    |
    1月前
    |
    Java Android开发
    Eclipse 创建 Java 项目
    Eclipse 创建 Java 项目
    44 4
    |
    1月前
    |
    SQL Java 数据库连接
    从理论到实践:Hibernate与JPA在Java项目中的实际应用
    本文介绍了Java持久层框架Hibernate和JPA的基本概念及其在具体项目中的应用。通过一个在线书店系统的实例,展示了如何使用@Entity注解定义实体类、通过Spring Data JPA定义仓库接口、在服务层调用方法进行数据库操作,以及使用JPQL编写自定义查询和管理事务。这些技术不仅简化了数据库操作,还显著提升了开发效率。
    45 3
    |
    1月前
    |
    前端开发 Java 数据库
    如何实现一个项目,小白做项目-java
    本教程涵盖了从数据库到AJAX的多个知识点,并详细介绍了项目实现过程,包括静态页面分析、数据库创建、项目结构搭建、JSP转换及各层代码编写。最后,通过通用分页和优化Servlet来提升代码质量。
    56 1
    |
    2月前
    |
    JavaScript 前端开发 Java
    解决跨域问题大集合:vue-cli项目 和 java/springboot(6种方式) 两端解决(完美解决)
    这篇文章详细介绍了如何在前端Vue项目和后端Spring Boot项目中通过多种方式解决跨域问题。
    402 1
    解决跨域问题大集合:vue-cli项目 和 java/springboot(6种方式) 两端解决(完美解决)
    |
    1月前
    |
    JavaScript Java 项目管理
    Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
    基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
    |
    2月前
    |
    Java Apache Maven
    Java/Spring项目的包开头为什么是com?
    本文介绍了 Maven 项目的初始结构,并详细解释了 Java 包命名惯例中的域名反转规则。通过域名反转(如 `com.example`),可以确保包名的唯一性,避免命名冲突,提高代码的可读性和逻辑分层。文章还讨论了域名反转的好处,包括避免命名冲突、全球唯一性、提高代码可读性和逻辑分层。最后,作者提出了一个关于包名的问题,引发读者思考。
    Java/Spring项目的包开头为什么是com?
    |
    2月前
    |
    运维 Java Maven
    Dockerfile实践java项目
    通过上述实践,我们可以看到,Dockerfile在Java项目中扮演着至关重要的角色,它不仅简化了部署流程,提高了环境一致性,还通过多阶段构建、环境变量配置、日志管理、健康检查等高级特性,进一步增强了应用的可维护性和可扩展性。掌握这些实践,将极大地提升开发和运维团队的工作效率。
    90 1