Java分析神器

Wesley13
• 阅读 520

Arthas 简介

Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。

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

Arthas 能帮你解决的问题

  • 1、这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?

  • 2、我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?

  • 3、遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?

  • 4、线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!

  • 5、是否有一个全局视角来查看系统的运行状况?

  • 6、有什么办法可以监控到JVM的实时运行状态?

  • 7、怎么快速定位应用的热点,生成火焰图?

Arthas 安装

使用 as.sh

Arthas 支持在 Linux/Unix/Mac 等平台上一键安装,请复制以下内容,并粘贴到命令行中,敲 回车 执行即可:

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

上述命令会下载启动脚本文件 as.sh当前目录,你可以放在任何地方或将其加入到 $PATH 中。

直接在shell下面执行 ./as.sh ,就会进入交互界面。

也可以执行 ./as.sh -h 来获取更多参数信息。

手动安装

通过 rpm/deb 来安装

在releases页面下载rpm/deb包:https://github.com/alibaba/arthas/releases

# 安装deb$ sudo dpkg -i arthas*.deb# 安装rpm$ sudo rpm -i arthas*.rpm# deb/rpm安装的用法,在安装后,可以直接执行$ as.sh

启动 Arthas

在命令行下面执行(使用和目标进程一致的用户启动,否则可能attach失败):

$ curl -O https://alibaba.github.io/arthas/arthas-boot.jar$ java -jar arthas-boot.jar
  • 执行该程序的用户需要和目标进程具有相同的权限。比如以admin用户来执行: sudo su admin && java -jar arthas-boot.jarsudo -u admin -EH java -jar arthas-boot.jar

  • 如果attach不上目标进程,可以查看 ~/logs/arthas/ 目录下的日志。

  • 如果下载速度比较慢,可以使用aliyun的镜像: java -jar arthas-boot.jar --repo-mirror aliyun --use-http

  • java -jar arthas-boot.jar -h 打印更多参数信息。

选择应用java进程:

$ $ java -jar arthas-boot.jar* [1]: 35542  [2]: 71560 arthas-demo.jar

Demo进程是第2个,则输入2,再输入 回车/enter。Arthas会attach到目标进程上,并输出日志:

[INFO] Try to attach process 71560[INFO] Attach process 71560 success.[INFO] arthas-client connect 127.0.0.1 3658  ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---. /  O  \ |  .--. ''--.  .--'|  '--'  | /  O  \ '   .-'|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |`.  `-.|  | |  ||  |\  \    |  |   |  |  |  ||  | |  |.-'    |`--' `--'`--' '--'   `--'   `--'  `--'`--' `--'`-----'wiki: https://alibaba.github.io/arthasversion: 3.0.5.20181127201536pid: 71560time: 2018-11-28 19:16:24$

Dashboard

# 在上面基础环境中执行 dashboard 命令$ dashboard

Java分析神器

在线演示

基于 Docker 诊断 Java 进程

诊断 Docker 里的 Java 进程

$ docker exec -it  ${containerId} /bin/bash -c "wget https://alibaba.github.io/arthas/arthas-boot.jar && java -jar arthas-boot.jar"

诊断 k8s 里容器里的 Java 进程

$ kubectl exec -it ${pod} --container ${containerId} -- /bin/bash -c "wget https://alibaba.github.io/arthas/arthas-boot.jar && java -jar arthas-boot.jar"

把 Arthas 打包到基础镜像里

FROM openjdk:8-jdk-alpine# copy arthasCOPY --from=hengyunabc/arthas:latest /opt/arthas /opt/arthas

如果想指定版本,可以查看具体的tags:https://hub.docker.com/r/hengyunabc/arthas/tags

总结

Arthas 是一个强大的 Java 诊断工具,可以分析 Java 代码bug带来的资源消耗等问题。

Arthas 详细使用方法,公众号后台回复 Arthas 获取Arthas详细参数思维导图。

Golang 微服务 1元 轻松购买

Java分析神器

参考链接

热门文章推荐

最后

  • 欢迎您加我微信【 ypxiaozhan01】,拉您进技术群,一起交流学习...

  • 欢迎您关注【 YP小站】,学习互联网最流行的技术,做个专业的技术人...

Java分析神器


【文章让您有收获,点个 在看 支持我吧】

本文分享自微信公众号 - YP小站(ypxiaozhan)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
1星期前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
2年前
java应用线上诊断神器
前言1、什么是Arthas?Arthas是Alibaba开源的Java诊断工具,深受开发者喜爱(截止2020.9.19githubstar是23K)。通过Arthas我们可以在线排查问题,无需重启;动态跟踪Java代码;实时监控JVM状态。2、Arthas有哪些特性实时查看系统的运行状况查看函数调
Stella981 Stella981
2年前
Arthas实践
背景Arthas是Alibaba开源的Java诊断工具,深受开发者喜爱。https://github.com/alibaba/arthas(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgithub.com%2Falibaba%2Farthas)
Wesley13 Wesley13
2年前
Java 调式、热部署、JVM 背后的支持者 Java Agent
1.探针的技术介绍各个JavaIDE的调试功能,例如eclipse、IntelliJ;热部署功能,例如JRebel、XRebel、springloaded;各种线上诊断工具,例如Btrace、Greys,还有阿里的Arthas;
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
2年前
Java诊断利器Arthas优雅排查生产环境
!arthas(https://oscimg.oschina.net/oscnet/23f68778f266584b7d4bf30e95a49012825.jpg)前言Arthas是Alibaba开源的Java诊断工具。在线排查问题,无需重启;动态跟踪Java代码;实时监控JVM状态。对分秒必争的线上异常,Arthas可帮助我
javalover123 javalover123
11个月前
开源Java诊断工具Arthas:开篇之watch实战
还在为排查Java程序线上问题头痛吗,看我们用阿里开源的诊断神器Arthas来帮您