点击上方蓝色“方志朋”,选择“设为星标”回复“666”获取独家整理的学习资料!

来源 | https://jitwxs.cn/a64edcb1.html

早就听闻阿里开源的 Arthas 在做 Java 应用诊断上十分牛逼,身边也有很多同事在使用,因此决定开一个坑,自己从零学习下这个工具的使用,本系列使用的版本是当前最新版 3.4.5。

由于 Arthas 经过这么长时间的发展,本身文档、在线教程已经十分健全了,同时还有第三方的 IDEA 插件、许多教学视频去帮助我们入门使用,因此这个系列的文章定位是个人笔记,而并非教程,希望不要误人子弟。

概述

https://arthas.aliyun.com

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

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

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

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

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

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

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

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

使用 Arthas 需要 JDK 版本在 1.6 以上。

快速安装

https://arthas.aliyun.com/doc/install-detail.html

Arthas 本身也是个 Java 进程,得益于 Java 跨平台特性,所以我就直接在 Windows 上安装了。

(1)下载 Arthas 包

curl -O https://arthas.aliyun.com/arthas-boot.jar

(2)运行 Arthas

java -jar arthas-boot.jar

需要注意的是运行 Arthas 前至少保证系统正在运行一个 Java 进程,否则无法启动,并会报错:Can not find java process. Try to pass in command line.Please select an available pid。解决办法就是跑一个 Java 应用即可。

如果需要卸载 Arthas 的话:

在 Linux/Unix/Mac 平台,删除下面文件:

rm -rf ~/.arthas/
rm -rf ~/logs/arthas

Windows平台直接删除user home下面的.arthas和logs/arthas目录

快速入门

4.1 attach 进程

这里我们使用 Arthas 官方提供的 demo 包,这样我们就不需要自己编写代码了。将 demo 包下载下来并运行。

curl -O https://arthas.aliyun.com/arthas-demo.jar
java -jar arthas-demo.jar

这个 demo 功能是死循环做质因数分解,并记录下无法分解的次数,如下图所示。

我们首先启动 Arthas 并 attach 上该进程。

默认情况下,Arthas只listen 127.0.0.1,所以如果想从远程连接,则可以使用 --target-ip参数指定 listen 的IP

另外如果条件允许的话,在 attach 后也可以使用浏览器登录,访问:http://127.0.0.1:3658 即可。也可以填入 IP,远程连接其他机器的 Arthas。

4.2 常用命令

4.2.1 dashboard

https://arthas.aliyun.com/doc/dashboard.html

使用 dastboard 命令可以查看 Java 进程信息(定时刷新),如需退出使用 q 即可。它由如下四个部分组成:

  • 第一部分是显示JVM中运行的所有线程:所在线程组,优先级,线程的状态,CPU的占用率,是否是后台进程等

  • 第二部分显示的JVM内存的使用情况

  • 第三部分显示的是 GC 相关的信息

  • 第四部分是操作系统的一些信息和Java版本号

4.2.2 thread

https://arthas.aliyun.com/doc/thread.html

使用 thread 命令可以查看当前所有的线程信息。

并且可以通过追加 PID 的方式,查看具体某个线程的状态。

4.2.3 jad

https://arthas.aliyun.com/doc/jad.html

使用 jad 命令可以反编译 class 文件。

4.2.2 watch

https://arthas.aliyun.com/doc/watch.html

watch 命令可以监控方法的入参出参:

退出 Arthas

如果只是退出当前的连接,可以用quit或者exit命令。Attach到目标进程上的 Arthas 还会继续运行,端口会保持开放,下次连接时可以直接连接上。

如果想完全退出arthas,可以执行stop命令。

END

最近写了一套 6000 页的 Java 学习手册,以及珍藏四本 Java 人必读4大神器,分享到知乎已经 3 万赞了!


http://www.taodudu.cc/news/show-122027.html

相关文章:

  • 另一种思考:为什么不选JPA、MyBatis,而选择JDBCTemplate?
  • 苹果开源代码中惊现“wechat”,老外注释的吐槽亮了!
  • 为什么汉字不能当密码,假如用汉字做密码,又会怎样?
  • App开放接口api安全:Token签名sign的设计与实现
  • 进程、线程、进程池、进程三态、同步、异步、并发、并行、串行
  • 4次优化,我把 Redis 性能 “压榨” 到极致!
  • 实现一个全链路监控平台很难吗?Pinpoint、skywalking、zipkin,哪个实现比较好?...
  • 兄弟!kafka的重试机制,你可能用错了~
  • 图解Spring解决循环依赖
  • 面试官问:为什么SpringBoot的 jar 可以直接运行?
  • 想避免重复请求/并发请求?这样处理才足够优雅
  • 主流微服务全链路监控系统之战
  • Linux内存、Swap、Cache、Buffer详细解析
  • 面试四连问:API 接口如何设计?安全如何保证?防重如何实现?签名如何实现?...
  • Java实现pdf和Excel的生成及数据动态插入、导出
  • 百度最近开源了分布式配置中心,名叫BRCC
  • 漫画 | 上班第一天,前端把后端告上县衙,还列了 5 宗罪!
  • 23 种设计模式的通俗解释
  • Spring Boot 集成 Swagger-Bootstrap-UI,非常棒的解决方案
  • Docker + FastDFS + Spring Boot 一键式搭建分布式文件服务器
  • SQL 性能起飞了!
  • 如何凭本事搞砸公司的重大项目?
  • 换掉 Maven,我用它!!!
  • 9条消除if...else的锦囊妙计,助你写出更优雅的代码
  • Spring解析,加载及实例化Bean的顺序(零配置)
  • 10w 行级别数据的 Excel 导入优化记录
  • 老板要我开发一个简单的工作流引擎
  • 我终于决定要放弃 okhttp、httpClient,选择了这个牛逼的神仙工具!贼爽!
  • Java 8 开发的 4 大顶级技巧,你都知道吗 ?
  • SpringCloud确保服务只能通过gateway转发访问,禁止直接调用接口访问

早就听闻阿里开源的 Arthas 在做 Java 应用诊断上十分牛逼,没失望相关推荐

  1. 阿里开源自用 OpenJDK 版本,Java 社区迎来中国力量

    2019独角兽企业重金招聘Python工程师标准>>> 阿里开源自用 OpenJDK 版本,Java 社区迎来中国力量 3 月 21 日,阿里巴巴将宣布开源 Alibaba Drag ...

  2. 阿里开源的15个顶级Java项目!!!

    Canal Canal[kə'næl] 翻译过来是水道/管道/沟渠的意思,主要用于基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费. Canal 可以帮助我们实现 MySQL 和其他数据源 ...

  3. 独家!阿里开源自用OpenJDK版本,Java社区迎来中国力量

    \u003cblockquote\u003e\n\u003cp\u003eInfoQ记者独家获悉:阿里巴巴宣布重磅开源OpenJDK长期支持版本Alibaba Dragonwell.众所周知,Orac ...

  4. 阿里开源的15个顶级Java项目

    上个周末抽时间整理了一些阿里开源的一些 Java 开源项目,希望对大家有帮助!这篇文章收录的所有开源项目都是还在继续维护并且可以使用的. 虽然有部分项目不是那么"完美",但是依然非 ...

  5. 从一线码农到阿里技术合伙人 P11的少林扫地僧多隆,人家牛逼是种习惯

    热文导读 | 点击标题阅读 欢迎加入Java和Android架构知识星球 2018年Android中高级面试题含答案 分享一张牛逼的程序员职业路线图给你们! 2014年,阿里巴巴上市前最后一次实质性更 ...

  6. 试用阿里开源的Arthas小记

    Arthas(阿尔萨斯)是阿里巴巴开源的 Java 诊断工具,是我今天看到开源中国的这片文章才了解的(https://www.oschina.net/p/arthas) 当然这个文章里写的这个工具能为 ...

  7. 阿里开源的Arthas竟然还不会用?最佳实践来了!

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取推荐书籍电子版 入门步骤 安装 https://arthas.gitee.i ...

  8. 阿里大佬告诉你,支付宝的架构到底有多牛逼!还没看完我就跪了!

    自 2008 年双 11 以来,在每年双 11 超大规模流量的冲击上,蚂蚁金服都会不断突破现有技术的极限. 2010 年双 11 的支付峰值为 2 万笔/分钟,到 2017 年双 11 时这个数字变为 ...

  9. 史上最牛逼的导航网站(开源免费)

    ➡️ www.webstack.cc - 网址导航 项目开源地址: https://github.com/WebStackPage/WebStackPage.github.io 内容均由viggo收集 ...

最新文章

  1. Ckeditor通过Ajax更新数据
  2. matlab中float类型的_【Python基础学习】2. 变量、基本数据类型及其转换
  3. 利用Perl生成随机复杂密码
  4. Spring EL hello world实例
  5. 数据可用不可见!揭秘蚂蚁区块链摩斯安全计算平台
  6. 模拟滤波器的单位冲激响应+单位阶跃响应+斜坡响应+抛物线响应matlab实现(转载+整理)
  7. struts2 标签不能使用EL 表单式
  8. 译 | 宣布ML.NET 1.2 及模型生成器更新(用于 .NET 的机器学习)
  9. C# 8 的新提案:new 关键字类型推断
  10. ABP入门系列(1)——通过模板创建MAP版本项目
  11. 公交车查询系统软件测试,公交APP评测:谁是最好用的公交线路查询软件?
  12. K8S集群安装Pod网络附加组件
  13. 在Ubuntu里配置slim
  14. 60条有名的原则与定理
  15. oracle建表案例,oracle创建表语句
  16. 改善C#程序的建议1:非用ICloneable不可的理由
  17. 从零开始搭建公司后台技术栈
  18. HashMap1.7中的线程安全问题
  19. 以太网物理层协议整理(1)-百兆/千兆以太网
  20. C++实现模拟网上购书的结账系统

热门文章

  1. 详解Azure的权限控制
  2. python2.7 Cheetah You don't have the C version of NameMapper installed
  3. 【大数据实时计算框架】Storm框架
  4. BZOJ1391: [Ceoi2008]order
  5. SpringCloud的服务网关zuul
  6. 用python做一个图片验证码
  7. 安卓版文字扫描识别软件
  8. 【C语言也能干大事】第五讲 组合框控件,下拉列表
  9. 从WEB SERVICE 上返回大数据量的DATASET
  10. 技术图文:如何通过挂单刷 BigOne 的贡献值?