
现在接手的一个算比较大型的分布式系统,一起有 4,5 个大模块,每个模块都是一个独立的 jvm,互相依赖。在 idea 中 debug 发现一旦时间过长就会各种 connection timeout,heart beat 超时,导致不得不重启系统,或者傻乎乎得打印日志。
尝试过修改一些心跳包的超时参数,但是因为刚接手不是很熟悉,外加很多地方参数甚至需要代码层面修改,感觉不仅麻烦而且容易出问题,所以想请教下有什么比较好的 debug 姿势,目前尝试了 btrace,可以注入一些方法进行参数的打印,但是还是不够方便,大神们有没有什么好的方法求指教
1 holyghost 2019 年 4 月 19 日 via iPhone jepsen 让你更强大 |
3 billlee 2019 年 4 月 19 日 一般单步调试的时候都是在一个 jvm 里面加载所有模块的 |
4 reus 2019 年 4 月 19 日 打印日志不仅不傻乎乎,还是正确的 debug 方法。很多分布式算法都很讲究时间,哪里能让你停下来的? |
5 jokerlee 2019 年 4 月 19 日 via Android 可以用 arthas 这种工具,不需要加断点 |
6 night98 2019 年 4 月 20 日 第一种:timeout 设置永不超时 第二种:写个 aop 切 service 层方法出入参 |
7 limuyan44 2019 年 4 月 20 日 via Android 大部分分布式都是靠日志 |
10 zhangyp123 2019 年 4 月 20 日 分布式调用链 |
11 tony601818 2019 年 4 月 20 日 分布系统多打 log 是万金油,ide 里 debug 就只能伪分布了。 |
12 xuanbg 2019 年 4 月 20 日 先靠日志确定问题点,一般如果抛异常,直接就能定位问题代码了。如果没有抛异常,不能确定具体是哪段代码出问题再上调试。 |
13 dazhangpan 2019 年 4 月 20 日 分布式 tracing |
14 coffeSlider 2019 年 4 月 20 日 via Android 监控+log |
15 tinybaby365 2019 年 4 月 20 日 opentracing |
16 v2dead 2019 年 4 月 20 日 当年跟一条 log 连着跳了三四台机器跟踪过去,有一种名侦探狄人杰的感觉。 |
18 bruce00 2019 年 4 月 20 日 via iPhone 只会用 print debug |
19 cabing 2019 年 4 月 20 日 找个 trace 工具啊。记录每次的调用链和参数。 |
21 version 2019 年 4 月 20 日 ide 的那些 debug 断点都是骗人的..提高不了效率. 真正的调试是代码的日志 log.没别的.这个是以前开发留给你的坑. |
23 autogen 2019 年 4 月 20 日 打 log |
24 version 2019 年 4 月 21 日 @snappyone 服务器接口应用层不能用 debug 断点了..如果你是单应用 web 或者 app 就无所谓..如果分布式和 rpc 应用.或者游戏..只能通过 log 日志来判定..这种调试方式是等于线上排查了.所以不能按本地的调试方式.因为很多情况你单机自己跑是模拟不出来的了...所以 log 排查是唯一靠谱的..因为你 debug 断点阻塞了.所以 timeout 很正常 |
25 tedzhou1221 2019 年 4 月 21 日 我觉得可以像#5 所说的,用 arthas,想在那个机器上打印日志都行,也不用在代码提前写打日志代码 |