apache httpd 2.2.8 + mod_proxy_ajp,以及tomcat 6.0.14,httpd会时不时地把应该发给用户A的内容发送给用户B。tcpdump显示,完全是tcp级别的纠结:httpd甚至不等tomcat 从AJP link发送回响应就把已有的一个应该发给另外一个连接的响应给发送了出去。所有的server都是从一个镜像复制出来的,但只有这个server,也是 产品正式上线前最重要的一个server,纠结到了这个程度…
于是乎,请求一个图片,返回一个css;请求一个css,返回一个js;某请求应该会拿到302跳转,结果返回一个应该显示给手机客户端的xml文档…
升级了下httpd到最新发行版,发现还是那个德行,然后在我们还在睡觉时被某人幸灾乐祸似的赶紧麻地利儿地又恢复到了2.2.8——稳定性,这是我在这 公司里最反感的一个说词:明明就是不稳定到无以复加的程度…有bugfix都不跟上,让人怀疑隐约是怕万一升级错了就得被人半夜从被窝里拎出来飙到机房。 其实apache出regression的频率和概率比我们自己要小很多——我不是说没出过。
httpd 2.2.8的代码放在机器里N天了,ctags也跑了一趟,就是没有时间看:因为要和人解释为什么我说这不是我们自己代码(java)出问题造成的,因为 有人怀疑我们自己的代码(java)已经神到可以corrupt整个java runtime从而导致tomcat返回错误的响应了。我从来是不会说”不可能”的人,只不过这事儿概率太小了,小到基本上等于我们team一起买了彩票 能瓜分整个奖池的概率。
反正那台server也已经被f*ck到这地步了,备用server也已经有人在申请了,准备搞个lighttpd上去试一下,毕竟apache错发响应 是实实在在被tcpdump下来了的,此外还有一次怀疑是某cache的shability。同时翻翻bugzilla以及svn log。
于是搞的我也很纠结:我是来修我们自己的java bug的吔…
圡鳖就需要受到SM级别的震慑。