java线上诊断工具Arthas-实战案例

前面文章提到过JVM调优工具可以使用Arthas。也听我的朋友阿凯吹过牛逼,说线上排查问题使用他很丝滑。
首先我就来简单介绍下他的作用:(粘贴官网)Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。在线排查问题,无需重启;动态跟踪Java代码;实时监控JVM状态。

Arthas 支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。

举个栗子:当你遇到如下问题,你可以永远相信Arthas
1.我明明改了代码,为什么线上不生效,难道遇到鬼了,还是运维小伙子没更上去(运维提刀找你来了:小伙子东西可以乱恰,话不能乱说){jad com.xxx.xxx}
2.遇到线上问题,又不能DEBUG,有没有日志,怎么办,重新加日志然后发包?(运维表示这得加钱,并且害得等到时机成熟在发包){watch com.xxx.xxx.(类名) execute(方法名) params(表示监听该方法的参数)
}
3.线上某个数据处理有问题,线下又不能复现,只能线上监视。
4.内存使用情况,线上可以监控JVM运行情况,及时调整
有了它你和运维寿命都会得到持久化。
说了这么多,看一个我遇到的实际问题。
我写了一个定时任务
在这里插入图片描述
在我的本地跑的很欢快,没半个小时走一次,但是放到黄区环境测试,发现定时任务不执行,于是我就开始怀疑难道自己没有更新成功?于是使用Arthas 反编译看了下。

在这里插入图片描述
确认时最新代码,那怎么回事。
只能看日志了,可是下一个日志要等30分钟,好恶心,那我就重新改下代码,将时间改为每10秒执行一次,好是好,但是恶心的是这个黄区既然有人放了生产的接口,还不允许我随便重启服务,要我等到下班在放上去,what fuck。
然后就通过 tt命令 获取到ApplicationContext
tt -t org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter invokeHandlerMethod
在这里插入图片描述
任意执行一次web 请求,tt 即可捕获索引
tt -i 1019 -w ‘target.getApplicationContext()’在这里插入图片描述
在这里插入图片描述

发现是连接超时,尽然测试环境不能连接到另一个服务器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值