大数据&云计算|线上项目出BUG没法调试?推荐这款阿里开源的诊断神器
Arthas是Alibaba开源的Java诊断工具 , 深受开发者喜爱 。 它采用命令行交互模式 , 同时提供丰富的 Tab 自动补全功能 , 进一步方便进行问题的定位和诊断 。
安装
为了还原一个真实的线上环境 , 我们将通过Arthas来对Docker容器中的Java程序进行诊断 。使用arthas-boot , 下载对应jar包 , 下载地址:https://alibaba.github.io/arthas/arthas-boot.jar
将我们的Spring Boot应用mall-tiny-arthas使用Docker容器的方式启动起来 , 打包和运行脚本在项目的srcmaindocker目录下;
将arthas-boot.jar拷贝到我们应用容器的目录下;
docker container cp arthas-boot.jar mall-tiny-arthas:/
进入容器并启动arthas-boot , 直接当做jar包启动即可;
docker exec -it mall-tiny-arthas /bin/bashjava -jar arthas-boot.jar
【大数据&云计算|线上项目出BUG没法调试?推荐这款阿里开源的诊断神器】启动成功后 , 选择当前需要诊断的Java程序的序列号 , 这里是1 , 就可以开始诊断了;
期间会下载一些所需的文件 , 完成后控制台打印信息如下 , 至此Arthas就安装启动完成了 。
本文插图
常用命令
我们先来介绍一些Arthas的常用命令 , 会结合实际应用来讲解 , 带大家了解下Arthas的使用 。dashboard
使用dashboard命令可以显示当前系统的实时数据面板 , 包括线程信息、JVM内存信息及JVM运行时参数 。
本文插图
thread
查看当前线程信息 , 查看线程的堆栈 , 可以找出当前最占CPU的线程 。
本文插图
常用命令:
# 打印当前最忙的3个线程的堆栈信息thread -n 3# 查看ID为1都线程的堆栈信息thread 1# 找出当前阻塞其他线程的线程thread -b# 查看指定状态的线程thread -state WAITING
sysprop
查看当前JVM的系统属性 , 比如当容器时区与宿主机不一致时 , 可以使用如下命令查看时区信息 。
sysprop |grep timezone
user.timezone Asia/Shanghai
sysenv
查看JVM的环境属性 , 比如查看下我们当前启用的是什么环境的Spring Boot配置 。
本文插图
logger
使用logger命令可以查看日志信息 , 并改变日志级别 , 这个命令非常有用 。
比如我们在生产环境上一般是不会打印DEBUG级别的日志的 , 当我们在线上排查问题时可以临时开启DEBUG级别的日志 , 帮助我们排查问题 , 下面介绍下如何操作 。
我们的应用默认使用的是INFO级别的日志 , 使用logger命令可以查看;
本文插图
使用如下命令改变日志级别为DEBUG , 需要使用-c参数指定类加载器的HASH值;
logger -c 21b8d17c --name ROOT --level debug
再使用logger命令查看 , 发现ROOT级别日志已经更改;
本文插图
使用docker logs -f mall-tiny-arthas命令查看容器日志 , 发现已经打印了DEBUG级别的日志;
推荐阅读
- 数据流|比亚迪M6用诊断仪无法读取TCU数据流检修
- 云计算|从互联网到AI崛起,上海能弯道超车吗?
- 技术编程|如何利用数据库进行世界史研究
- 行业互联网,AI人工智能|城市教育大脑以“ AI+ 大数据”为核心 , 引领教育变革
- 行业互联网,云计算|赛伯乐携手华为(重庆)人工智能创新中心聚焦AI前沿,助力企业数字化转型
- |如何分析“会员数据”,强化门店的竞争力?
- 数据|翼方健数解码隐私安全计算 实现数据“可用不可见”
- 云计算|腾讯云小微首次技术开放日,揭秘AI语音背后的奥秘
- 智慧城市|数据归心、AI赋能,打牢新型智慧城市建设基础
- 目标检测|数据民工也能移动办公了:目标检测标注App上线,分分钟创建私人数据集