注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

老和山小和尚

敬天爱人

 
 
 

日志

 
 
 
 

nginx_ajp_module性能测试  

2010-06-24 16:24:53|  分类: Nginx |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
今天我针对上次发布的nginx_ajp_module进行了性能测试,并与nginx原有的http_proxy模式以及mod_jk进行了对比。由于测试的影响因素有很多,本次测试只能给一个大概的比较,并不能完全准确的反应各种情况下的结果。

1、测试的结果:
nginx_ajp_module性能测试 - 120斤的大青蛙 - 老和山小和尚
 从测试结果可以看出,nginx_ajp_module比原有的http模式有10%-50%的性能提升,在高并发的情况下,nginx的代理模块比mod_jk有10%-2倍的提升。
2、原因分析
ajp代理模块比http代理模块性能好的主要原因有2个:
  • ajp模块是后端keepalive的。我觉得这个因素影响比ajp模块的二进制作用更大,但是由于现在nginx还没有http形式的keepalive功能,所有现在还没发作比较。我在测试中发现,如果后端代理服务器在远处,延迟>30ms的时候,keepalive功能性能影响巨大,ajp和http代理相差3倍左右。
  • ajp模块是二进制的,可以减少http 协议解析的时间。
从图中可以看出,mod_jk的伸缩性是很差的,随着并发度的增加,apache的吞吐量并没有相应线性增加,而nginx却可以,这与apache的原有架构有很大关系,多线程模型在高并发的情况下,伸缩性是比较差的。



附录:
1、测试软件
apache附带的测试工具ab,测试命令类似为:
ab -k -n 10000 -c 100 http://example/page.do
测试时我都加了keepalive选项。

2、测试网页
一个http头部加主体约有350个字节的网页。

3、配置
nginx-0.7.65的基本配置:
worker_processes  4;

events {
    worker_connections  65536;
}

http {
  sendfile        on;
  keepalive_timeout  65;
server {
        location /http {
    #http_tomcats是24台tomcat,对应http端口
            proxy_pass http://http_tomcats;
        }
        location /ajp {
            #ajp_tomcats是同样的24台tomcat,对应ajp端口
            ajp_pass http://ajp_tomcats;
        }
}
}

apache 2.2的基本配置:
Timeout 300
KeepAlive On
MaxKeepAliveRequests 512
KeepAliveTimeout 15

<IfModule mpm_worker_module>
    ThreadLimit          32
    ServerLimit         128
    StartServers         16
    MaxClients         4096
    ThreadsPerChild      32
</IfModule>

jk模块:
worker.app-1.port = 8009
worker.app-1.host = 192.168.1.110
worker.app-1.type = ajp13
worker.app-1.lbfactor = 100
worker.app-1.disabled = false
worker.app-1.connection_pool_size = 64
worker.app-1.connection_pool_timeout = 600
worker.app-1.socket_keepalive = 1
worker.app-1.socket_timeout = 300
...
#共24台worker。

worker.space.type = lb
worker.space.sticky_session = true
worker.space.balance_workers = app-1 ... app-24
worker.space.method = B
worker.space.lock = O

  评论这张
 
阅读(4111)| 评论(17)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018