慢连接&LazyParser

本文通过实际测试探讨了慢连接对Java应用容器的影响,比较了Nginx、Apache和Jetty在处理慢连接时的差异,并介绍了如何利用LazyParser优化处理大数据量请求。测试结果显示,Nginx的数据堆积效果能有效保护后端服务器,而LazyParser能显著减少Java IO次数,提高处理性能。最后提出了针对开放平台优化慢连接的建议,包括改进nginx数据堆积模式、优化Jetty的Bio模式和更换Jetty的Nio模块。
摘要由CSDN通过智能技术生成

慢连接&LazyParser

Author:放翁(文初)

Mail:fangweng@taobao.com

Tblog:weibo.com/fangweng

 

这里要从实际的测试中给Web应用开发者一个比较直观的关于慢连接优化的建议。

 

测试目标:

1.  证明慢连接对于Java的应用容器的影响。

2.  不同前端反向代理服务器对于慢连接的处理差异。

3.  如何利用LazyParser的方式来优化慢连接请求(特别是大数据量的一些异常请求的处理)

 

测试部署环境描述:

Apache服务器(2.2.19版本)配置基本没变,增加了http proxy模块作为反向代理。

Nginx服务器(1.0.4版本)配置基本没变,增加了反向代理。

Jetty服务器(7.1.6版本)配置基本没变。JettyLazy解析缓存为8k

部署如下,外部请求可以通过三个入口访问应用真实逻辑。(apache,nginx,jetty

 

 

 

 

测试代码:

服务端:

 

简单描述一下逻辑:

1.       根据http消息头判断采用lazy还是普通方式解析。

2.       输出start test表示开始。

3.       获取key1,key2的内容,并记录消耗时间输出phase 1 use:xxx作为获取这两个参数的消耗。

4.       获取key4的内容,并记录消耗时间输出phase 2 use:xxx作为获取这个参数的消耗。

5.       获取key3的内容,并记录整个请求消耗的时间,输出end total use:xxx,作为整个处理消耗的时间。

 

客户端代码:

1.  配置不同入口访问应用。

2.  是否设置使用lazyhttp header来引导服务端处理。

3.  构建参数集合,参数顺序为(key1,key2,key3,key4)。其中key3作为一个大数据字段可变,用于多个场景测试。

 

 

测试结果及分析:

1.  设置key3大小为1000char,对比多个场景:

a.       不用lazy解析模式

(1)     通过nginx访问:

Nginx日志(第一位是消耗时间单位秒):0.002 115.193.162.12 - - [20/Jun/2011:10:50:44 -0400] "POST /cometpipe/slowtest?key1=1 HTTP/1.1" 200 19 "-" "Jakarta Commons-HttpClient/3.0.1" "-"

Jetty日志:

start test: not use lazy

phase 1 use :0

phase 2 use :1

end total use:1

 

(2)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值