早就听闻阿里开源的 Arthas 在做 Java 应用诊断上十分牛逼,没失望
点击上方蓝色“方志朋”,选择“设为星标”回复“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 应用诊断上十分牛逼,没失望相关推荐
- 阿里开源自用 OpenJDK 版本,Java 社区迎来中国力量
2019独角兽企业重金招聘Python工程师标准>>> 阿里开源自用 OpenJDK 版本,Java 社区迎来中国力量 3 月 21 日,阿里巴巴将宣布开源 Alibaba Drag ...
- 阿里开源的15个顶级Java项目!!!
Canal Canal[kə'næl] 翻译过来是水道/管道/沟渠的意思,主要用于基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费. Canal 可以帮助我们实现 MySQL 和其他数据源 ...
- 独家!阿里开源自用OpenJDK版本,Java社区迎来中国力量
\u003cblockquote\u003e\n\u003cp\u003eInfoQ记者独家获悉:阿里巴巴宣布重磅开源OpenJDK长期支持版本Alibaba Dragonwell.众所周知,Orac ...
- 阿里开源的15个顶级Java项目
上个周末抽时间整理了一些阿里开源的一些 Java 开源项目,希望对大家有帮助!这篇文章收录的所有开源项目都是还在继续维护并且可以使用的. 虽然有部分项目不是那么"完美",但是依然非 ...
- 从一线码农到阿里技术合伙人 P11的少林扫地僧多隆,人家牛逼是种习惯
热文导读 | 点击标题阅读 欢迎加入Java和Android架构知识星球 2018年Android中高级面试题含答案 分享一张牛逼的程序员职业路线图给你们! 2014年,阿里巴巴上市前最后一次实质性更 ...
- 试用阿里开源的Arthas小记
Arthas(阿尔萨斯)是阿里巴巴开源的 Java 诊断工具,是我今天看到开源中国的这片文章才了解的(https://www.oschina.net/p/arthas) 当然这个文章里写的这个工具能为 ...
- 阿里开源的Arthas竟然还不会用?最佳实践来了!
点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取推荐书籍电子版 入门步骤 安装 https://arthas.gitee.i ...
- 阿里大佬告诉你,支付宝的架构到底有多牛逼!还没看完我就跪了!
自 2008 年双 11 以来,在每年双 11 超大规模流量的冲击上,蚂蚁金服都会不断突破现有技术的极限. 2010 年双 11 的支付峰值为 2 万笔/分钟,到 2017 年双 11 时这个数字变为 ...
- 史上最牛逼的导航网站(开源免费)
➡️ www.webstack.cc - 网址导航 项目开源地址: https://github.com/WebStackPage/WebStackPage.github.io 内容均由viggo收集 ...
最新文章
- Ckeditor通过Ajax更新数据
- matlab中float类型的_【Python基础学习】2. 变量、基本数据类型及其转换
- 利用Perl生成随机复杂密码
- Spring EL hello world实例
- 数据可用不可见!揭秘蚂蚁区块链摩斯安全计算平台
- 模拟滤波器的单位冲激响应+单位阶跃响应+斜坡响应+抛物线响应matlab实现(转载+整理)
- struts2 标签不能使用EL 表单式
- 译 | 宣布ML.NET 1.2 及模型生成器更新(用于 .NET 的机器学习)
- C# 8 的新提案:new 关键字类型推断
- ABP入门系列(1)——通过模板创建MAP版本项目
- 公交车查询系统软件测试,公交APP评测:谁是最好用的公交线路查询软件?
- K8S集群安装Pod网络附加组件
- 在Ubuntu里配置slim
- 60条有名的原则与定理
- oracle建表案例,oracle创建表语句
- 改善C#程序的建议1:非用ICloneable不可的理由
- 从零开始搭建公司后台技术栈
- HashMap1.7中的线程安全问题
- 以太网物理层协议整理(1)-百兆/千兆以太网
- C++实现模拟网上购书的结账系统