线上调试神器arthas
一、Arthas入门
Arthas 是阿里巴巴开发出的一款线上调试工具,他的厉害之处就是我们不需要停止线上的服务就可以排查问题,监控方法。Arthas使用简单,上手快等优点让我觉得十分方便, 强力推荐。
- 启动官网给的测试应用
curl -O https://arthas.aliyun.com/math-game.jar
java -jar math-game.jar
- 使用相同用户启动arthas
curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar
启动成功后,能够观察到arthas的字样,表明arthas启动成功。
另外我们可以直接通过 http://127.0.0.1:3658/ 访问web console:
一个简单的java应用连接到arthas就这样成功了。
二、Arthas实战之调式springboot应用
1. docker 容器连接上arthas
使用arthas诊断线上的docker部署的java应用, docker 容器启动arthas格式: docker exec -it ${containerId} /bin/bash -c "wget https://arthas.aliyun.com/arthas-boot.jar && java -jar arthas-boot.jar
同样的启动成功后,会出现Arthas的大字样!
2.线上使用命令操作springboot应用
thead命令
thread命令查看应用运行的一些线程。
dashboard命令
dashboard 命令可以查看JVM里的各内存区域使用情况,非常地详细直观!
noheap: 对外内存,直接由操作系统管理。
code_cache: 代码区。
metaspace: 元数据区。
logger命令
查看日志命令:
logger
根据logger命令打印出的信息,我们可以打印出相关的Springboot日志
cat /tmp/spring.log
jad命令
可以通过jad命令反编译线上的源代码,这样可以查看本地与线上类代码的差异。
jad 类名表达式匹配
** watch命令
个人觉得watch命令在调试中使用的比较多,也比较重要, 特别是观测接口的调用信息等。
例如我们想要监控一个方法,可以通过如下格式来进行监控、
watch com.example.shop.controller.ProductController getProducts
- com.example.shop.controller.ProductController 为类的全限定名
- getProducts 为类里的指定方法。
用postman调用此方法对应的接口,观察arthas控制台:
还有如果我们想要观察入参和返回结果,那么就可以在使用-x 参数, 命令如下,2表示输出结果的遍历深度,默认为1。
watch com.example.shop.controller.ProductController getProducts -x 2
添加 -v 参数可以打印出更多的信息:
watch com.example.shop.controller.ProductController getProducts -x 2 -v
watch各命令参数表
参数名称 | 参数说明 |
---|---|
class-pattern | 类名表达式匹配 |
method-pattern | 方法名表达式匹配 |
express | 观察表达式 |
condition-express | 条件表达式 |
[b] | 在方法调用之前观察 |
[e] | 在方法异常之后观察 |
[s] | 在方法返回之后观察 |
[f] | 在方法结束之后(正常返回和异常返回)观察 |
[E] | 开启正则表达式匹配,默认为通配符匹配 |
[x:] | 指定输出结果的属性遍历深度,默认为 1 |
monitor命令
此命令可监控方法调用成功或失败,可查看评价时间等,可用如下命令统计5s内的方法调用结果,5表示监控周期。
monitor -c 5 com.example.shop.controller.ProductController getProducts
-c : 统计周期, 默认周期为60s。
-b: 方法调用之前执行。
使用arthas诊断kubernetes里的方法和上述类似, 命令格式kubectl exec -it ${pod} --container ${containerId} -- /bin/bash -c "wget https://arthas.aliyun.com/arthas-boot.jar && java -jar arthas-boot.jar"
arthas官网指南: https://arthas.aliyun.com/doc/docker.html
线上调试神器arthas相关推荐
- BTrace工具(linux版)---线上调试神器
如果在分析线上问题时,发现日志打的不全,无法定位怎么办?添加日志重新上线,不是一个好方法,特别是调试时,可能要反复添加日志来定位问题或者线上出现的问题很难再复现,根本就没有机会添加日志再继续分析,这时 ...
- 线上Debug神器--Arthas(阿尔萨斯)
目录 一.Arthas环境准备 1.概述 2.运行环境要求 3.安装&卸载 二.Arthas命令学习 一.Arthas环境准备 1.概述 Arthas是Alibaba开源的Java诊断工具,深 ...
- 发条js调试工具_小工具大帮手,利用 @open-node/antman 实现 node.js 进程线上调试,无须重启...
@open-node/antman 窥探进程内部,让 Node.js 生产环境线上调试成为可能 解决了什么问题? 日常在开发服务端代码,很多是服务类型的,比如基于http的api,或者一些任务脚本,需 ...
- 禅道 bug状态 open_小工具大帮手,利用 @open-node/antman 实现 node.js 进程线上调试,无须重启...
@open-node/antman 窥探进程内部,让 Node.js 生产环境线上调试成为可能 解决了什么问题? 日常在开发服务端代码,很多是服务类型的,比如基于http的api,或者一些任务脚本,需 ...
- greys线上调试代码
greys线上调试代码 软件的说明文档地址:https://github.com/oldmanpushcart/greys-anatomy/wiki/greys-pdf 文件位置: >cd /u ...
- 【工具】线上办公神器
目录 ProcessOn Tower 为知笔记 小画桌协作白板 Apifox 参考 ProcessOn ProcessOn是一款专业在线作图工具,满足多种图形的绘制,包括流程图.思维导图.原型图.BP ...
- 没有打印日志,如何排查线上问题?——arthas(阿尔萨斯)
背景 实际工作中,有时候漏打了日志或者线上环境才会出现问题,不得不到线上去复现,导致问题无法及时处理或者线上的包版本与本地的包版本不一样,导致各种种样的问题缺少实际一手的数据进行分析排查问题. Art ...
- java线上排查利器arthas
当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 commit?分支 ...
- java线上诊断工具,Java线上诊断神器Arthas-1
Arthas 是Alibaba 开源的一款线上诊断工具,相比Java 自带的jinfo, jmap,jstat 等工具更方便(起码不用记那么多参数),而且利用字节码增强技术,可以很好的对线上的问题进行 ...
最新文章
- 基于机器学习逻辑回归算法完成癌症病人的肿瘤是否良性的判断
- 11gpath失败 oracle_Oracle 11gR2执行DBCA报错误
- 安装NodeJs运行环境
- iOS开发UI篇——Button基础
- Angular里遇到的一个依赖注入问题以及解决办法
- jquery 加载中_在 vue 中使用 ztree
- 他35k月薪,如何扛住redis面试!
- javascript开发HTML5游戏--斗地主(单机模式part1)
- oracle rpad()函数
- Silverlight4 麦克风应用-录音机
- 吉米多维奇数学分析习题集每日一题--泰勒公式习题1377
- 集成电路设计——闩锁效应
- oracle 省份三个字的,中国所有省份的简称是什么?
- 电影赏析 002《毒战》
- windows os x linux比较,windows、Linux与OS X相比,哪个系统更适合写代码?
- 东华大学计算机考研大纲,2019年东华大学854计算机及软件工程专业基础综合考研初试大纲...
- js关闭浏览器当前页(iframe)
- ROS中的机器人模型控制——ros_control
- AutoLisp从入门到放弃(十二)
- Springboot用HttpServletRequest作为controller入参后接收不到请求
热门文章
- 【FXCG】人民币中间价报6.3401,下调58点
- Android 强制第三方应用横屏显示
- 国家大数据政策文件汇编(2022年) 附下载
- android手机icoude邮件,如何在Android上设置iCloud电子邮件访问 | MOS86
- leetcode 两数相加,在ubuntu上编译通过,显示结果了,在leetcode上报错了,找错在哪?
- 大数据未来会如何发展
- Vue3.x 报 Uncaught TypeErrorObject(...) is not a function( Vue3对象不是函数解决思路)
- SOA架构与微服务架构到底是什么?以及对应的一些常用的框架简介
- python中in什么意思_python中5in什么意思
- 【超详细】C51单片机与HC-05蓝牙模块实现手机点灯