没有解不了的bug,讲讲我做某大型系统的几次修复重大bug的逸事

来源: aguafresh 2022-05-18 14:49:48 [] [旧帖] [给我悄悄话] 本文已被阅读: 次 (3158 bytes)

写程序实现用户要的功能只是最基本的,大型系统里面的代码,有一半都不是为了实现用户可见的功能的,而是为了维护、管理、升级、查bug、评估等等而写的。

- Log & OM

在程序的关键点一定log,要不然死机以后毫无线索。Log占用空间很多,要能分级、分类打开关闭。还要有自动清除的机制。一个新来的coder时想不了这么多,就让平台组根据本系统的复杂程度做好log的机制,其他人调用就是了。printf的底层机制很多人都不清楚,新手用printf把系统吊死的事情太多了。

另外,不可能在所有地方都有log,这时OM就发挥作用。OM是统计各种情况发生的次数,比如做了什么操作、收到某类信息的次数,分类越细越好。

我当时要求所有代码都要有Log和OM,交叉检查时发现没有Log和OM的代码一律枪毙。我的Team里面有个元芳,他写的代码里面有各种OM,记录了自己的代码的各种运行情况,所以他的程序的bug早就清除的比其他人的干净。更神奇的是,他的代码里还有很多OM记录了和他打交道的模块的各种信息,分类有时比原模块还详细。如果现场出了什么神秘的bug,大家在自己的OM里找不到信息,都会问:元芳,你怎么看?

一次我们公司的另一个系统A在某地出了故障,都上新闻了。这是公司另外一个分部做的,他们查了几个小时没有头绪。本来和我没什么关系,但是我的部门也有一套系统在同一地点,我就问:元芳,你怎么看?他调出他的OM,居然有数据表明系统A在死机前的有异常消息路过我们这。把情况告诉兄弟部门,帮他们迅速定位了bug。

- 联想能力

我们的系统是个集群,涉及的操作系统有Unix, Windows和VxWorks。有一段时间,连续几个星期天的下午,技术支持会收到用户投诉,系统响应慢到不可忍受。但是在排查过程中,系统又好了。周末开发工程师休息,被叫来远程登陆,故障已经不在了。从我们的Log 和 元芳的 OM看来,是VxWorks操作系统出了问题。VxWorks的供应商说,上火星的Pathfinder都是用这个操作系统,不太可能有影响这么大的bug。

我分析:每次投诉的是不同地方的客户,都是星期天下午,如果是和星期天有关,全国上百套系统,不会每次只有一两个系统有问题。突然想起,N年前看过一则新闻,Windows NT的某个版本,如果停留在登录界面49.7天不动,系统就会自己崩溃。

而我们给客户升级系统,都是在星期六晚上,49.7天后,就是星期天下午。我就让Wind River公司(VxWorks的开发商)那边查,IP Stack里面以毫秒为单位的32bit counter。他们果然发现,里真的有一个这样的counter溢出处理不对,造成网络堵塞。

大家都觉得神奇,我这边没看代码都能定位bug。

所有跟帖: 

牛人! -节度使- 给 节度使 发送悄悄话 节度使 的博客首页 (0 bytes) () 05/18/2022 postreply 15:17:02

厉害 -成功的兔- 给 成功的兔 发送悄悄话 (0 bytes) () 05/18/2022 postreply 15:18:44

不懂coding看着觉得厉害。可能类似于通了就不难。 -gossipgirl8- 给 gossipgirl8 发送悄悄话 gossipgirl8 的博客首页 (0 bytes) () 05/18/2022 postreply 15:20:19

元芳NB. -DukeAB- 给 DukeAB 发送悄悄话 (0 bytes) () 05/18/2022 postreply 15:24:43

大哥神了 -tibuko- 给 tibuko 发送悄悄话 tibuko 的博客首页 (0 bytes) () 05/18/2022 postreply 15:28:54

这是做CS的。 -Bebe54321- 给 Bebe54321 发送悄悄话 (0 bytes) () 05/18/2022 postreply 15:49:40

牛人啊 -凊荷- 给 凊荷 发送悄悄话 凊荷 的博客首页 (140 bytes) () 05/18/2022 postreply 16:10:49

非CS专业的,不过从中学到大学,写过很多程序。而软件工程的方法是第二份工作学来的 -aguafresh- 给 aguafresh 发送悄悄话 (403 bytes) () 05/18/2022 postreply 17:06:40

牛人! -bobpainting- 给 bobpainting 发送悄悄话 (0 bytes) () 05/18/2022 postreply 17:16:07

上面讲的只是逸事,真正的软件工程方法、工具网上有很多资料 -aguafresh- 给 aguafresh 发送悄悄话 (105 bytes) () 05/18/2022 postreply 17:51:51

给个link please? -成功的兔- 给 成功的兔 发送悄悄话 (0 bytes) () 05/18/2022 postreply 17:59:06

真钦佩钻研的专家!我们学校和我们洲另一大学遭到ransomware 袭击。因为学生资料全在上面,我们两校都付了钱才给解 -无言无语无声- 给 无言无语无声 发送悄悄话 (261 bytes) () 05/18/2022 postreply 18:05:08

很牛的! -beachlver- 给 beachlver 发送悄悄话 beachlver 的博客首页 (0 bytes) () 05/18/2022 postreply 18:46:56

Logging vs performance. A trade off -bashfulx- 给 bashfulx 发送悄悄话 (0 bytes) () 05/18/2022 postreply 20:14:29

请您先登陆,再发跟帖!

发现Adblock插件

如要继续浏览
请支持本站 请务必在本站关闭/移除任何Adblock

关闭Adblock后 请点击

请参考如何关闭Adblock/Adblock plus

安装Adblock plus用户请点击浏览器图标
选择“Disable on www.wenxuecity.com”

安装Adblock用户请点击图标
选择“don't run on pages on this domain”