纠结de更新

No Comments

好像把apache httpd降级到1.3.x目前来说有效地扼制了该纠结的再次发生,当然,这是还没有完全通过机器压测以及人肉压测证实的,因为各路PM都太忙,前几天发过的一个禁止所有人碰那台server的禁令发布以后真的就没有任何人在碰了,导致降级后服务的压力很轻很轻,除了某health check脚本意外只有我等一二人在随机访问服务。
不过,就像已经敲定的,即使降级到1.3.x可以100%消除这个问题,这也只不过是一个workaround,而不是solution。我真期待我可以NB哄哄地去提个patch给tomcat,可为啥感觉这概率会很小乜…为啥还是很在意dmesg里网卡TSO被disable的那几条日志乜…为啥还是很怀疑e1000网卡驱动的那几个看起来很match该server运行环境的known issues乜…
明天的任务是改掉tomcat的AJP 1.3 connector,强迫丫不许和httpd私下协商来重用已有的AJP连接然后和httpd 2.2.x连接测试——假如这能阻止httpd 2.2.x犯错误,那就意味着…其实也就是验证了下我们长久以来的怀疑:httpd不知道为啥突然漏读/漏发了,导致以后所有的request/response都错了一个位置。显然不重用已有AJP连接的话,AJP协议为数不多的这点儿好处也基本用不上了,对性能肯定是一记重击,是万万不可能用于production上的。
话说tomcat的代码看久了,感觉也不过尔尔,有些繁琐罗嗦跟不上时代,典型的SUN风格。有空倒是该尝试尝试jetty、resin,以前总觉得这俩东西不入流…

什么是纠结?纠结就是…

No Comments

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级别的震慑。

tcnative

No Comments

Apache Tomcat从5.5.x开始可以借由tcnative来wrap起APR来。很多同事都很惊讶于tc 5.5.x退出时报告的找不到APR库的问题,好在我对APR早就有所了解,还像模像样的做了些Hello World级别的小练习,所以对这个没啥感觉,只是在想,tc开始用APR了么?抱歉我很少看tc的release notes,以后要注意…
后来转悠到tc 5.5的文档中关于APR的一章,也没仔细看,粗略的浏览了一下。这几天在tomcat-users邮件列表中,有个话题是讨论不用apache httpd做前端而完全用tc做web服务器的问题,看看大家对tc+tcnative+apr+OpenSSL报以如此高的期望,于是回到tc 5.5的文档中一看,可以说比较费机器的事情tcnative都考虑了,比如传输大文件,更好的处理Keep-Alive,SSL等等。不过即使如此,我觉得也许大家都是javaer所以对全Java的解决方案天生容易接受,而且Java应用的处理速度今年来是与日俱增,有的情况下已经比较接近甚至超过C了,但是吃内存仍然是天性,很难有什么好转吧,但tcnative这下给我留下了比较深刻的印象,赫赫,回头要实践一下。apache+mod_jk+tomcat是有些过时了,而且有些影响响应速度,基本上估计不会在将来的实践中考虑了,没有应付多编程语言web应用时应该不会考虑了。我还是觉得即使有了tcnative+apr,处理静态资源的事情还是应该apache httpd来接管。

apache.projects["Tomcat"].doRealse(tomcat_5.5.17);

No Comments

Tomcat 5.5.17发布,挺快啊~

看了眼CHANGELOG,越来越坚信,CHANGELOG这东西对我来说除了意味着阅读时的兴奋,也意味着恶心:如果不马上更新,手下正跑着的那个版本竟然有这么多bug和不足:^

Technorati :