记得我在上一篇文章《 一个耗时4小时的内存泄漏问题》 链接中的封面说过这样的一句话:
当出现bug时不要疑惑不要心急
有bug的日子里需要镇静
相信吧
下一个bug很快来临
让你嘴贱!下一个bug真的很快就来临了。
上一篇文章中讲到的bug出自笔者正在进行的一个并行化项目,由于该项目改动较大,因此代码分多次提交,上一篇文章提到的bug就出在了第一次提交当中。最近该项目代码已全部开发完成,至于最终效果其实笔者自己也是没底的,尽管在线下进行了充分的测试,但是我知道这种涉及到并行化多线程的改动在几台机器上测试可能都不会有问题,因为机器较少可能都不会触发问题,真正接受线上检验时就不一定了。
但是项目已经到deadline了,代码开发完成也经过了测试,管不了那么多了,上线吧。
项目上线
怀着忐忑的心情开始上线了,毕竟之前看到过太多类似的问题,而且涉及到多线程的bug很难排查,这次改动涉及到并行的代码太多了,尽管在开发过程中仔细检查了可能存在的线程安全问题的代码,但毕竟人不是机器不可能做到滴水不漏,不管怎样,上线有问题大不了就回滚,也没什么大不了的。
结果代码一次上线成功,没有任何问题! 没有影响线上业务,也没有core dump,一切顺利。
这。。不科学啊,墨菲定律没有生效啊,哈哈,我的代码写的没有这么好吧,一瞬间对自己的自信来到了新的一个高峰,天才啊。
冷静之后觉得这也太顺利了吧,期待中的各种问题都没有出现,这反而让自己犯起了嘀咕,这个项目不会就这样完成了吧,没有惊天动地的bug反而觉得稍显平淡了一些,就好比你满心期待的去看一部预期很棒的电影但是剧情无比平庸没有各种跌宕起伏没有奇妙反转,总之如鸡肋一般让人食之无味。
我一度怀疑自己是不是平时被bug虐出精神病了,没有bug不是好事吗,竟然还有人期待自己代码出现bug的,这不是没事儿找抽的沙雕么。
要的就是没有bug。
期待的剧情出现了
第二天笔者又像往常一样例行检查线上机器,检查到昨天上线的机器时,那种所谓奇妙反转的剧情出现了,包含笔者代码的机器内存使用情况是这样的: