分布式系统的正确 debug 姿势求解

2019-04-19 21:33:13 +08:00
 snappyone

现在接手的一个算比较大型的分布式系统,一起有 4,5 个大模块,每个模块都是一个独立的 jvm,互相依赖。在 idea 中 debug 发现一旦时间过长就会各种 connection timeout,heart beat 超时,导致不得不重启系统,或者傻乎乎得打印日志。

尝试过修改一些心跳包的超时参数,但是因为刚接手不是很熟悉,外加很多地方参数甚至需要代码层面修改,感觉不仅麻烦而且容易出问题,所以想请教下有什么比较好的 debug 姿势,目前尝试了 btrace,可以注入一些方法进行参数的打印,但是还是不够方便,大神们有没有什么好的方法求指教

4757 次点击
所在节点    程序员
25 条回复
version
2019-04-20 20:51:18 +08:00
ide 的那些 debug 断点都是骗人的..提高不了效率.
真正的调试是代码的日志 log.没别的.这个是以前开发留给你的坑.
snappyone
2019-04-20 21:06:53 +08:00
@version 为什么这么说呢,个人感觉如果是单体应用用 debug 断点配合合适的 log 应该更方便吧
autogen
2019-04-20 22:30:17 +08:00
打 log
version
2019-04-21 00:41:32 +08:00
@snappyone 服务器接口应用层不能用 debug 断点了..如果你是单应用 web 或者 app 就无所谓..如果分布式和 rpc 应用.或者游戏..只能通过 log 日志来判定..这种调试方式是等于线上排查了.所以不能按本地的调试方式.因为很多情况你单机自己跑是模拟不出来的了...所以 log 排查是唯一靠谱的..因为你 debug 断点阻塞了.所以 timeout 很正常
tedzhou1221
2019-04-21 11:21:16 +08:00
我觉得可以像#5 所说的,用 arthas,想在那个机器上打印日志都行,也不用在代码提前写打日志代码

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/556907

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX