Java开发还会吃香吗,当Dubbo遇上Arthas,会碰撞出什么样的火花

Client端:

Server端:

Arthas快速开始

启动后,会列出所有的java进程,选择1,然后回车,就会连接上ServerDemoApplication

Dubbo线上服务抛出异常,怎么获取调用参数?

当线上服务抛出异常时,最着急的是什么参数导致了抛异常?

在demo里,

访问http://localhost:8080/user/0,UserServiceImpl就会抛出一个异常,因为user id不合法。

在Arthas里执行 watch com.example.UserService * -e -x 2 ‘{params,throwExp}’ ,然后再次访问,就可以看到watch命令把参数和异常都打印出来了。

怎样线上调试Dubbo服务代码?

在本地开发时,可能会用到热部署工具,直接改代码,不需要重启应用。但是在线上环境,有没有办法直接动态调试代码?比如增加日志。

在Arthas里,可以通过redefine命令来达到线上不重启,动态更新代码的效果。

比如我们修改下UserServiceImpl,用System.out打印出具体的User对象来:

本地编绎后,把

server-demo/target/classes/com/example/UserServiceImpl.class

传到线上服务器,然后用redefine命令来更新代码:

这样子更新成功之后,访问 http://localhost:8080/user/1,在ServerDemoApplication的控制台里就可以看到打印出了user信息。

怎样动态修改Dubbo的logger级别?

在排查问题时,需要查看到更多的信息,如果可以把logger级别修改为DEBUG,就非常有帮助。

ognl是apache开源的一个轻量级表达式引擎。下面通过Arthas里的ognl命令来动态修改logger级别。

首先获取Dubbo里TraceFilter的一个logger对象,看下它的实现类,可以发现是log4j。

再用sc命令来查看具体从哪个jar包里加载的:

可以看到log4j是通过slf4j代理的。

那么通过org.slf4j.LoggerFactory获取root logger,再修改它的level:

可以看到修改之后,root logger的level变为DEBUG。

怎样减少测试小姐姐重复发请求的麻烦?

在平时开发时,可能需要测试小姐姐发请求过来联调,但是我们在debug时,可能不小心直接跳过去了。这样子就尴尬了,需要测试小姐姐再发请求过来。

Arthas里提供了tt命令,可以减少这种麻烦,可以直接重放请求。

总结

谈到面试,其实说白了就是刷题刷题刷题,天天作死的刷。。。。。

为了准备这个“金三银四”的春招,狂刷一个月的题,狂补超多的漏洞知识,像这次美团面试问的算法、数据库、Redis、设计模式等这些题目都是我刷到过的

并且我也将自己刷的题全部整理成了PDF或者Word文档(含详细答案解析),有需要的朋友可以戳这里即可免费领取

我的美团offer凉凉了?开发工程师(Java岗)三面结束等通知...

66个Java面试知识点

架构专题(MySQL,Java,Redis,线程,并发,设计模式,Nginx,Linux,框架,微服务等)+大厂面试题详解(百度,阿里,腾讯,华为,迅雷,网易,中兴,北京中软等)

我的美团offer凉凉了?开发工程师(Java岗)三面结束等通知...

算法刷题(PDF)

ux,框架,微服务等)+大厂面试题详解(百度,阿里,腾讯,华为,迅雷,网易,中兴,北京中软等)**

[外链图片转存中…(img-8CtH8fJp-1628283366233)]

算法刷题(PDF)

我的美团offer凉凉了?开发工程师(Java岗)三面结束等通知...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值