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。

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

    相关文章
    |
    1天前
    |
    Java 关系型数据库 MySQL
    【Java Spring开源项目】新蜂(NeeBee)商城项目运行、分析、总结
    【Java Spring开源项目】新蜂(NeeBee)商城项目运行、分析、总结
    12 4
    |
    1天前
    |
    存储 Java Maven
    Maven 构建 Java 项目
    使用 Maven 的 `maven-archetype-quickstart` 插件在 `C:\MVN` 创建 Java 应用项目 `consumerBanking`,命令行参数包括 `-DgroupId`, `-DartifactId` 和 `-DarchetypeArtifactId`。项目包含 src/main/java 和 src/test/java 目录,分别存放 Java 代码和测试代码,以及 src/main/resources 用于存储资源文件。默认生成的 `App.java` 和 `AppTest.java` 分别为应用主类和测试类。
    |
    1天前
    |
    移动开发 前端开发 Java
    STS里的java 工程项目名称修改和目录设置成源代码
    STS里的java 工程项目名称修改和目录设置成源代码
    |
    1天前
    |
    JavaScript 前端开发 Java
    java项目的打包将vue放到.jar里面部署
    java项目的打包将vue放到.jar里面部署
    |
    1天前
    |
    缓存 安全 前端开发
    来聊聊Java项目分层规范
    本文讨论了Java项目的分层规范,强调了分层的重要性以避免代码不易扩展和职责边界模糊。作者分享了阿里提出的六层分层模型(开放接口层、终端显示层、Web层、Service层、Manager层、Mapper层)以及对应的领域模型(DO、DTO、VO、query)。同时,提出了简化版的分层规约,以提高开发效率。作者是CSDN Java博客专家,维护者之一的Java Guide项目,并提供了个人项目结构示例。文章鼓励读者关注其公众号以获取更多交流机会。
    29 4
    |
    1天前
    |
    Java
    springboot项目出现Exception in thread “main“ java.lang.NoClassDefFoundError: javax/servlet/Filter
    springboot项目出现Exception in thread “main“ java.lang.NoClassDefFoundError: javax/servlet/Filter
    16 0
    |
    1天前
    |
    Java Maven
    Maven 构建 Java 项目
    使用Maven的`maven-archetype-quickstart`插件在C:\MVN下创建Java应用,命令包括`groupId`, `artifactId`, 和 `archetypeArtifactId`参数。生成的项目包含src/main/java和src/test/java目录,分别用于存放源代码和测试代码,还有src/main/resources用于资源文件。默认提供App.java主类和AppTest.java测试类。按照预设结构组织文件,Maven将自动管理构建过程。
    |
    1天前
    |
    Java
    IDEA云行项目提示Error: java: OutOfMemoryError
    IDEA云行项目提示Error: java: OutOfMemoryError
    |
    1天前
    |
    Java API 数据安全/隐私保护
    【亮剑】如何在Java项目中结合Spring框架实现邮件发送功能
    【4月更文挑战第30天】本文介绍了如何在Java项目中结合Spring框架实现邮件发送功能。首先,需在`pom.xml`添加Spring和JavaMail依赖。然后,在`applicationContext.xml`配置邮件发送器,包括SMTP服务器信息。接着,创建一个使用依赖注入的`EmailService`类,通过`JavaMailSender`发送邮件。最后,调用`EmailService`的`sendSimpleEmail`方法即可发送邮件。最佳实践包括:使用配置管理敏感信息,利用`MimeMessage`构造复杂邮件,异常处理和日志记录,以及在大量发送时考虑使用邮件队列。