Teaser Image

mindwind

十日画一水,五日画一石




「在是否你也曾遭遇性能的黑洞?」

黑洞,在物理学上是由质量足够大的恒星在聚变衰灭后发生引力塌缩而形成。 它的质量如此之大,引力场如此之强,以至于任何物质和辐射,甚至光线都没法逃脱。 在黑洞的周围,形成了一个无法侦测的视界。

仰望星空,你能看见满天繁星,闪烁迷离,而黑洞却隐藏在宇宙的背景中。 在我熟悉的软件程序设计领域,最具有黑洞特征的现象就是性能问题,我称之为“性能黑洞”。 存在性能黑洞的程序,表现出诡异的行为,当你打开你的“探照灯”(debug / trace log)它们又倏忽无踪。

在我刚从学校毕业工作不到3个月时,就碰到过这么一次性能黑洞问题,那时是在一家银行。 一个大概已经存在了10~12年的(具体记不清了)系统,突然有一天就不能正常工作了,时不时的崩溃。 这个系统的原作者,早已不知去向,而且10多年下来可能也经历了好几代程序员的维护。 10多年来一直稳定运行的系统,怎么突然就爱崩溃了? 那时我刚好被分配来做这个系统的技术支持,一直带着不敢相信的质疑。 我一开始怀疑,肯定是有人改动了什么,直到挨着检查了所有程序编译后的二进制文件,都还停留在遥远的过去。 确实没有人改动过任何东西,那么就是说系统里存在一个10多年下来一直不为人知bug。 想想能找出一个隐藏了这么多年的bug,还挺让人兴奋的,就好像发现了埋藏在地下久远的宝藏。 寻找这个bug的过程有点像《盗墓笔记》中描述的盗墓过程。 项目经理(三叔)带着两个高级工程师(闷油瓶和胖子)连续奋战了好几天。 而我一个新手,只能在他们跟踪分析探索的过程中,盯着那个随时有可能崩溃的系统,当它一down掉就进行重启。 最后,这个问题的具体原因是什么,已经记不太清楚了,但能肯定的是这确实是一个性能问题,一个性能黑洞。 它潜伏在系统中长达10多年,却无人知晓,直到有一天某种条件引发了它,出现了能被人们观测到的现象(down机)。 事后,我们都明白了为什么会爆发出这样严重的性能问题,当时的时间背景是2006年8~9月间。 而这个系统正是处理该银行全省范围内与之互联的券商资金互转。 而2006年~2007年正是中国股市爆发的第二春,系统的交易量突然之间比过去十年的均值高了100倍(全民疯狂的年代)。 第一春是在上交所和深交所刚成立时,还记得那部《股疯》的电影吧,那时还没能实现无形的电子化交易。 而这个系统正是在93年~97年之间(具体哪年实在搞不清了),中国股市从人工交易模式向电子化交易转变中设计实现的,并一直用到了我去接手维护的2006年。

后记,我可以理解90年代初那个编写该系统的程序员,他们那时还没有经历软件工程思想、设计模式、分布式系统原理等各种思潮影响。 更没有意识到10多年后,当初写的用者寥寥的程序,最终有一天会服务于几千万上亿用户。 只是当它在那一刻崩溃的时候,对于像我这样一个那时刚毕业不到3个月的同学来说,的确像被抛进了无边的宇宙,没有光,是黑洞还是宇宙的背景?