2011年7月31日星期日

除虫故事(一)

    汽车对冰淇淋过敏的传说都听说过吧,贝壳也说几件故事。寓意什么的就别提了,当个故事听吧。
    第一个故事,是一个传奇的问题。贝壳早在02年的时候,就在家里弄了两台电脑。互相用网线一连,组成局域网打游戏。当时流行的游戏还是Diablo II,当然,这东西的III已经叫了10年,还没出来,接近永远的毁灭公爵。两台机器之间的游戏打的很流畅,一点异常都没有。
    当年文件共享还是有很多问题的,尤其是连续的几个蠕虫,有志一同的使用了windows的samba系统。所以安全上说,贝壳舍弃了windows文件共享,使用ftp方案。当年还流行用ftp开自己的文件资料共享站,贝壳就用雷电自己开了一个。现在基本看不到了,基本都是用网盘或者p2p。问题就出现在这个文件传输上。
    文件传输的速度常常限制在1-3K之间,速度死活上不去。结合Diablo II可以正常工作的事实,贝壳的初步结论是ftp系统问题。然而从外网测试的结果,ftp站点一切正常。那么ftp客户端呢?经过测试,这个客户端软件和配置在外网上访问贝壳自己的站点是正常的。
    那么从表象上看,问题就在客户端所在的机器上了。贝壳检查了机器的网卡和系统驱动,又重装了系统,问题仍旧没有消除——似乎有点奇怪吧。而且推理上说,如果机器有问题,Diablo II也不会运行的如此流畅的。
    好吧,我们揭晓谜底。问题出在两台机器相连的一根网线上。这根网线质量不好,有一根线时通时断。结果导致ip数据包概率性不一致。ip是不管peyload一致性的,但是tcp管阿,结果导致大量的tcp重传。tcp是一种慢启动协议,因此速度死活上不去。
    至于Diablo II可用的问题,则是因为游戏的数据量少,包也小。因此即使慢启动,数据也可以很快重传,导致虽然有问题,却不能很直观的被发现。
    这个问题,直到贝壳无意中更换网线才被发现。但是细究推理,却是合情合理。算是一场灯下黑吧。

没有评论: