1 问题背景
线上生产环境常常遇到异常无法定位,用户数据有问题无法在线上生产环境debug,无法得知方法的返回结果,笔者常遇到这些情况,因此研究阿里开源的Java诊断工具——Arthas。Arthas不仅仅是进行线上debug,还能查看jvm情况,类加载,实时热部署(超厉害的手段) 等等。
2 前言
但在介绍如何使用arthas线上debug之前,笔者先介绍arthas的一些整体概况。从整体架构、调用关系有一定的理解,才容易理解在后面如何使用arthas。
3 Arthas有什么作用
官方文档介绍如下:
4 入门小实践
花十来分钟访问在线快速入门Arthas看看Arthas是怎么玩的。
5 SpringBoot应用、Arthas、Arthas Tunnel Server之间的关系
从前面的入门小实践可以知道,他们的关系如下:
我们通过启动一个Arthas应用,使用控制台命令与SpringBoot应用A交互。
但是在流式计算里,Java进程(即SpringBoot应用)可以是在不同的机器启动的,想要使用Arthas去诊断会比较麻烦,因为用户通常没有机器的权限(即无法在机器上面启动一个Arthas应用),即使登陆上机器也分不清是哪个Java进程。
因此基于以上的情况,就有了Arthas Tunnel Server,其与SpringBoot应用交互的关系如下(图片不清楚可右击“在新标签页打开”):
如上图所示,引入的arthas-spring-boot-starter
依赖,使得SpringBoot应用能成为一个Arthas Tunnel Client
角色,每一个Client都有属于自己的agent-id
,Arthas Tunnel Server端管理多个Client。用户在浏览器输入arthas的命令行与client交互。