分享

Nginx连接JBoss碰到的问题

 hh3755 2012-11-10

最近在做Nginx+JBoss的性能测试,目标是通过性能测试的结果与Apache + JBoss进行比较,看看是不是有必要用Nginx替换Apache。目前Nginx+JBoss的方式采用的是pass_proxy的方式。从当前的测试结果来看,性能比Apache+JBoss有不小的提升。今天测试时碰到了一个有趣的问题,在Nginx专家叔度的协助下很快地解决了,也明白Nginx作为Proxy与后端服务交互的原理,是以为记。

今天试图配置JBoss nio(其实就是tomcat6.0中的nio)的模式进行性能测试,修改好Connecter的配置之后发现访问页面非常慢。于是测试通过8080端口直接访问JBoss,发现页面打开很快,因此可以得出问题出在Nginx与Jboss之间。于是找到我厂的Nginx专家帮忙排查,不一会专家就找出了问题的原因,打来电话给我解决。原来在修改Jboss nio配置时默认采用的是HTTP1.1协议,还默认开启了keepalive,而Nginx作为reverse proxy只支持HTTP1.0协议。Nginx在与后端Server交互时,采用HTTP1.0的模式,认为每个连接关闭才算请求完成,而后端server使用了keepalive,所以Nginx一直等到后端的这个keepalive连接关闭才返回给浏览器,所以访问页面非常慢。

问题根源找到了,修改起来就很快了,参照http://tomcat./tomcat-6.0-doc/config/http.html文档,将maxKeepAliveRequest=1,关闭keepalive。重启jboss后,问题解决。

一点感想,学习Nginx还是得弄明白其内部处理原理,否则只能悲剧,无奈目前市面上的书多是讲述如何配置,对于这些原理机制所述甚少。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多