SoftwareEngineeringandApplications软件工程与应用,2013,2,118-123http://dx.
doi.
org/10.
12677/sea.
2013.
25021PublishedOnlineOctober2013(http://www.
hanspub.
org/journal/sea.
html)AnalysisandPerformanceEvaluationofWebServerExtensibleArchitectureImplementingClusterandLoadBalance*BingweiLiu1,QunhuiWu2,JunhuiDu3#1KaramayCityDrainageManagementOffice,Karamay2ShanghaiBunnyInformationTechnologyCo.
Ltd.
,Shanghai3SchoolofOptical-ElectricalandComputerEngineering,UniversityofShanghaiforScienceandTechnology,ShanghaiEmail:1445335630@qq.
com,#dujunhui110@sina.
comReceived:Jul.
2nd,2013;revised:Jul.
13th,2013;accepted:Jul.
21st,2013Copyright2013BingweiLiuetal.
ThisisanopenaccessarticledistributedundertheCreativeCommonsAttributionLicense,whichpermitsunrestricteduse,distribution,andreproductioninanymedium,providedtheoriginalworkisproperlycited.
Abstract:ConfiguringTomcatclustersbasedonApacheandNginxrespectively,andcomparingtheperformanceincludingTPS(TransactionPerSecond)andART(AverageResponseTime)underthesamenetworkenvironment,amoreextensiblestructurecombiningtheeffectivenessandresource-savingofNginxandtheflexibilityandpopularityofApacheisdesigned.
Finallytheanalysis,designandtheperformancetestoftheproposedwebserverclusteraredemonstratedsuperioronperformanceandpracticaloperation.
Keywords:ClusterandLoadBalance;ApacheHTTPServer;NginxHTTPServer;TomcatServer;ReverseProxyWeb集群负载可扩展性架构分析及性能评价*刘兵伟1,邬群辉2,杜军辉3#1克拉玛依市排水管理处,克拉玛依2上海浦理信息科技有限公司,上海3上海理工大学光电信息与计算机工程学院,上海Email:1445335630@qq.
com,#dujunhui110@sina.
com收稿日期:2013年7月2日;修回日期:2013年7月13日;录用日期:2013年7月21日摘要:本文通过对基于Apache的Tomcat集群和基于Nginx的Tomcat集群的配置,在相同网络环境下进行单位时间内处理请求数、平均响应时间等性能的测试,提出一种更具扩展性的Tomcat集群,既融合了Nginx高效节能特点,又具备Apache的灵活性和普适性优点.
通过分析、设计和性能测试,验证了这种Web服务器集群在性能和实际操作中的优越性.
关键词:集群负载;Apache服务器;Nginx服务器;Tomcat服务器;反向代理1.
引言Web服务器系统集群负载技术为系统容量及其可扩展性提供了良好的途径,它通过一定形式可以把一组服务器组织起来,对外提供更为强大的服务能力,也可以在同一台服务器上部署多个相同系统进行集群,充分挖掘服务器的潜力.
随着F5BIG-IP、Radware、CitrixNetScaler等硬件设备的大量涌现,可以说实现负载均衡并不是难事,但是这些硬件设备高*基金项目:国家自然科学基金项目(No.
61202376).
#通讯作者.
Copyright2013Hanspub118Web集群负载可扩展性架构分析及性能评价昂的价格[1]却往往让很多中小型网络公司或高校等事业单位不得不望而却步,因此负载均衡软件自然而然成为它们青睐的宠儿.
开始于20世纪90年代的Apache与诞生于2002年的后起之秀Nginx,分别以其优秀的高效性、反向代理功能和灵活的负载均衡策略等备受业界的广泛关注和设计研究[2,3].
然而相比于Apache,Nginx相关的可扩展性架构分析并不是很多.
本文从架构分析、设计实现和性能评价等方面介绍Apache、Nginx与轻量级应用服务器Tomcat可扩展性负载均衡的实现.
2.
Apache、Nginx与Tomcat服务器2.
1.
Apache服务器ApacheHTTPServer(即ApacheHTTP服务器,简称Apache服务器)作为Web服务器软件,是ApacheSoftwareFoundation(即Apache软件基金会)的一个开源项目,伴随Internet的出现而出现,目前依然是Internet中使用最多的Web服务器软件,可以说Apache代表了目前网络服务器的先进技术.
瑞典网站监测服务公司Pingdom于2012年5月发布了最近网页软件使用报告.
该调査结果显示,在全球排名最高的1万名网站中,开源软件的使用率高达75%.
Pingdom的调查结果显示,全球使用人数最多的网站服务器依然是ApacheHTTPServer,占到39.
8%;其次是俄罗斯公司开发的Nginx(发音同engineX),Nginx由IgorSysoev为俄罗斯最大的门户网站Rambler.
ru而开发[2];而作为非开源类服务软件,微软的IIS(InternetInformationServices,即互联网信息服务)市场占有率已降到14%.
ApacheHTTP服务器作为现今最流行的Web服务器端软件之一,以其功能完善、性能稳定、完全免费、源码完全开放等原因成为Web服务器的最佳选择.
2.
2.
Nginx服务器根据瑞典网站监测服务公司Pingdom发布的该网页软件使用报告显示,Nginx已然成为全球使用人数仅次于ApacheHTTPServer的第二大Web服务器软件,并且其使用数量呈日益增长的趋势,直逼Apache服务器市场.
Nginx以其高性能、稳定性、丰富的功能设置、简单的配置和资源消耗低等优点而闻名世界.
人们使用Nginx服务器主要使用它的两大特点:一是高并发访问,二是代理服务器Proxy,Nginx可以迅速解析静态文件,而对于动态语言实现的动态程序(如Servlet、JSP等)则传递到后台服务器(如Tomcat服务器等),从而实现了动态和静态网页解析的分离[3],提高效率,节省资源.
Nginx能够很好地解决服务器的C10K问题(网络服务在处理数以万计的客户端连接时,往往出现效率低下甚至完全瘫痪,即C10K问题),因为它的设计不像传统服务器使用线程处理请求,取而代之的是使用了一个更加高级的机制——事件驱动机制,而且是异步事件驱动结构[2].
NginxProxy是Nginx的特色功能,利用Proxy实现负载均衡,具有以下特色:1)功能强大,性能卓越,运行稳定;2)配置简单灵活;3)能够自动剔除工作不正常的后端服务器;4)上传文件使用异步传输模式;5)支持多种分配策略,可以分配权重,分配方式灵活[3].
2.
3.
Tomcat服务器ApacheTomcat服务器(简称Tomcat服务器),由Apache软件基金会下属的Jakarta项目开发,以其运行时占用的系统资源小、开源性、可扩展性、支持负载均衡与邮件服务等功能,而且不断的改进和完善更新,使得很多感兴趣的程序员都可以对其进行更改或者往其中注入新功能,因而深受广大程序员的喜欢.
Tomcat以轻量级应用服务器身份,在中小型系统或者并发性要求不是很高的场合下被普遍使用,是开发和调试JSP程序的首选.
Tomcat部分是Apache服务器的扩展,但它是可以独立运行的,所以当运行Tomcat时,它实际上是作为一个与Apache服务器独立的进程单独运行的.
Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外Tomcat还是一个Servlet和JSP的容器,Tomcat的默认模式就是一个独立的Servlet容器.
但是,Tomcat处理静态HTML的能力不如Apache服务器,这也正是将ApacheHTTPServer与Tomcat整合、集群的重要原因之一.
Copyright2013Hanspub119Web集群负载可扩展性架构分析及性能评价3.
基于Apache的Tomcat集群负载将Apache服务器与Tomcat集群的原因在于:提升服务器对静态文件(如html、图片、CSS等)的处理性能[4];利用Web服务器做负载均衡以及容错;无缝地对应用程序进行升级[5].
速度快、稳定性高,对一个Web网站来说是非常重要的,而这种Apache+"Tomcats"(Apache与多个Tomcat进行集群实现负载均衡)的结构(见图1)具有很高的性价比和良好的可靠性,不会因为某个或者某几个Tomcat宕机或程序升级导致用户访问不了,而能够完成这种功能的最好的HTTP服务器就是Apache服务器,因为它跟Tomcat的结合是最紧密和可靠的.
Apache负责静态资源的处理,而Tomcat完成JSP和Servlet等动态资源的处理,正如前面所说,原因在于Tomcat处理静态资源的能力不如Apache服务器.
在JK(TomcatConnector,即Tomcat连接器)[6]出现之前,Apache与Tomcat的整合通常采用mod_jserv(Jserv模块)作为Apache中的WEB服务器接口,来将客户端的请求从Apache重定向到Tomcat以建立Tomcat与Apache的联系.
然而由于使用mod_jserv会使Apache的配置比较复杂,且不能用于其它HTTP服务器上,只能用在Apache上,同时它还不能很好地支持SSL(SecureSocketLayer),因此采用这种方式来整合Apache和Tomcat会增加配置文件的复杂性,从而降低了灵活性.
因此JK应运而生,JK可以理解为Tomcat提供给HTTP服务器的插件,实现Tomcat与Apache等HTTP服务器之间的通信[7],其配置比mod_jserv要简单方便得多.
除了使用JK方式实现Apache和Tomcat的整合外,还有http_proxy和ajp_proxy连接方式等[8].
http_proxy方式利用Apache自带的mod_proxy模块使用代理技术来连接Tomcat.
http_proxy模式基于HTTP协议的代理,要求Tomcat必须提供HTTP服务,所以必须启用Tomcat的HTTPConnector.
ajp_proxy方式其实跟http_proxy方式一样,均由mod_proxy提供连接功能.
配置也是一样,只需要在访问时将http://换成ajp://即可,同时连接的是Tomcat的AJPConnector所在的端口.
相对于JK的连接方式,http_proxy和ajp_proxy浏览器ApacheWeb服务器JK插件Tomcat服务器AjpConnectorURL映射信息Figure1.
ApacheandTomcatintegrationprinciple图1.
Apache与Tomcat的集成原理连接方式在配置上是比较简单的,灵活性方面也非常出色.
但就稳定性而言则不如JK这样久经考验,因此,如果是应用于关键的互联网网站,最好还是采用JK的连接方式.
集群配置完成后,建立test_cluster测试项目,在项目的web.
xml中添加,distributable元素用来告诉Servlet容器(即Tomcat),程序将部署在分布式Web容器中,从而实现session的共享.
将动、静态文件分别部署,即将项目的动态文件部署到实现集群的2个Tomcat服务器的webapps目录中,而将静态文件部署到Apache的htdocs目录中,然后分别启动Apache和2个Tocmat服务器,打开URL:http://localhost/test_cluster/test.
jsp.
页面刷新,则依次会看到tomcat1、tomcat2出现,实现了负载均衡,多次刷新页面,看到session的ID号是相同的一个,说明session复制是成功的.
通过往输入框中分别输入名称为number,值为1的信息后,显示结果如图2所示,即为session中存储的属性.
页面刷新,看到该属性也得到了复制.
以上的测试说明,集群中的session已经共享,每个集群对于同一访问均有相同的session,而且session中存储的属性变量也得到了复制.
当关闭tomcat2,则只访问tomcat1,说明节点关闭时运行正常.
至此基于ApacheHTTPServer的ApacheTomcat集群负载基本完成.
4.
基于Nginx的Tomcat集群负载作为轻量级的HTTP服务器,Nginx与Tomcat集群负载的配置相比于Apache要简单得多,只需修改Nginx的主配置文件nginx.
conf,在http节点里添Copyright2013Hanspub120Web集群负载可扩展性架构分析及性能评价Figure2.
Testprojectexplorer图2.
测试项目浏览效果加:upstreamlocalhost{#定义反向代理及后台服务器的负载均衡设备IP及状态,其中weight为分配权重,weight越大,负载的权重就越大.
除了weight参数外,还有其它,如down表示当前的server暂时不参与负载;backup表示其它所有的非backup的机器down或者忙的时候,请求backup机器,所以这台机器压力会最轻.
Nginx还支持多组的负载均衡,可以配置多个upstream来服务于不同的Server.
serverlocalhost:11080weight=1;serverlocalhost:12080weight=1;}location/{indexindex.
htmlindex.
htm;if(!
-e$request_filename)#在缓存中找不到的文件就会通过下面的proxy_pass去后台服务器查找,并且还会保留在本地的缓存中{proxy_passhttp://localhost;break;}}#对网站的动态程序设置参数location~\.
(jsp|do|action|servlet)${proxy_set_headerHost$host;proxy_set_headerX-Forwarded-For$remote_addr;proxy_passhttp://localhost;}#其中proxy_passhttp://localhost用于指定反向代理的服务器池;proxy_set_headerHost$host表示当后端Web服务器上也配置有多个虚拟主机时,需要用该Header来区分反向代理的主机名;proxy_set_headerX-Forwarded-For$remote_addr表示如果后端Web服务器上的程序需要获取用户IP,就从该Header头获取.
#对网站的图片、Flash、JavaScript、CSS、静态HTML等静态文件进行web缓存location~.
*\.
(gif|jpg|jpeg|png|bmp|swf|js|css|html|shtml)${expires30d;}为实现动态文件与静态文件分开处理,我们依然将项目的动态文件(JSP、Servlet等)部署到这两个Tomcat服务器的webapps目录中,而将静态文件部署到Nginx的html目录中,以此来实现动静分离,提高效率,节省资源.
测试项目启动后和Apache下的Tomcat集群负载相类似,session依然得到复制,运行如图3所示.
至此Window下Nginx+"Tomcats"的简单集群负载配置结束.
在Nginx下,关于Tomcat的Session问题通常是采用Memcached[3,9],或者采用nginx_upstream_jvm_route模块[9,10](它是一个Nginx的扩展模块,用来实现基于Cookie的SessionSticky的功能),如此则涉及到Nginx的优化[11]、Tomcat的优化、Apache的优化[12]等,本文只是实现基于Apache、Nginx的Tomcat可扩展性集群负载分析及其性能比较,故此不涉及优化方面的研究.
5.
基于Apache与Nginx的Tomcat集群鉴于Nginx的优秀性能,特别是在处理静态文件和反向代理所表现出来的良好性,使它结合功能完善、模块众多、可扩展性更强的Apache,来实现基于Nginx+Apache的Tomcat集群负载均衡也不失一条实际的解决方案.
具体的方法还是使用Nginx的反向代理,让Apache运行在后台,而Nginx运行在前台.
为了避免端口冲突,需要将Apache端口号从原有的80修改为其它端口,如9090即可.
6.
性能比较及分析OpenWebLoad是一款自由的开源系统,在Windows和Linux操作系统上均可使用.
它可以在服务器上抛出大量请求,查看服务器处理请求的准确率,使用数量可变的连接,发送尽可能多的请求,每一秒发送报告,见图4操作显示界面.
Copyright2013Hanspub121Web集群负载可扩展性架构分析及性能评价Figure3.
Implementsreplicationofsessionattribute图3.
Session属性实现复制Figure4.
PerformancetestingusingOpenWebLoad图4.
使用OpenWebLoad进行性能测试从表1的数据看出,无论是基于Apache的Tomcat集群,还是基于Nginx的Tomcat集群,当并发连接数很少时,每秒处理的完整请求数(TPS)较低,然而响应时间较短;当并发连接数太多时,每秒处理的完整请求数(TPS)较高,但响应时间较长.
对于两种集群来说,各自的并发连接数可以取得一个合适的中间值,使得每秒处理完整请求数和平均响应时间均比较合适.
但是对比基于Apache的Tomcat集群和基于Nginx的Tomcat集群,我们可以看到随着并发连接数的增加,前者性能急剧下降,当并发连接数达到400时已经受到了瓶颈限制,TPS值已经为0,即用户已经无法访问了.
而后者并没有受到此限制,经测试其并发连接数可以达到1000多.
从表2的数据可以看出,基于Apache与Nginx的Tomcat集群,随着并发连接数的增长,每秒处理的完整请求数(TPS)在短暂的增长之后下降,而平均响应时间持续增长.
整体性能较之基于Apache的Tomcat集群和基于Nginx的Tomcat集群,优于前者,略逊与后者.
Table1.
Nginx+TomcatwithApache+Tomcatclusteringperformancetest表1.
Nginx+Tomcat与Apache+Tomcat集群性能测试性能测试1测试2指标ApacheNginxApacheNginx并发连接数10100每秒处理完整请求数(TPS)287.
14283.
94281.
69339.
30平均响应时间33ms34ms338ms280ms性能测试3测试4指标ApacheNginxApacheNginx并发连接数300400每秒处理完整请求数(TPS)124.
25316.
180301.
67平均响应时间981ms384ms0393msTable2.
Nginx+ApacheTomcatclusteringtoachieveperformancetest表2.
Nginx+Apache实现Tomcat集群性能测试性能指标测试1测试2测试3测试4并发连接数10100300400每秒处理完整请求数(TPS)282.
72315.
38293.
65290.
00平均响应时间35ms302ms402ms417ms7.
结论Nginx对系统资源消耗少、允许高并发访问、配置简单,使它相对于Apache大有取代之势.
从本文的实验性能对比来看,基于Nginx的Tomcat集群实现负载均衡的效果确实要远远好于基于Apache的Tomcat集群.
但是Apache现如今依然是全球使用人数最多的网站服务器,凭借多年的发展,其功能很完善,模块众多,因而想一夜之间将Apache切换到Nginx不切合实际.
所以我们可以使用Nginx、Apache的混合环境,一方面可以根据实际的应用需求来逐步使用Nginx替换Apache,另一方面可以在现有基础上实现Nginx+Apache的集群负载,从性能测试结果看到这种基于Nginx与Apache的Tomcat可扩展性集群负载效果也很不错.
参考文献(References)[1]刘振宇.
利用Nginx实现网站负载均衡[J].
中国管理信息化,2012,15(16):96.
[2]张宴.
实战Nginx:取代Apache的高性能Web服务器[M].
北Copyright2013Hanspub122Web集群负载可扩展性架构分析及性能评价Copyright2013Hanspub123京:电子工业出版社,2010:5-6.
[3]陶利军.
决战Nginx:高性能Web服务器部署与运维[M].
北京:清华大学出版社,2012:1,159-190.
[4]刘薇.
基于J2EE架构的分布式静态页面生成分析与设计[J].
福建工程学院学报,2010,8(1):90-93.
[5]孙仁鹏.
Tomcat与Apache集成的研究[J].
电脑编程技巧与维护,2011,14:6-8.
[6]刘尚旺,何东健,闫艳.
Tomcat与IIS或Apache服务器集成的应用研究[J].
计算机工程与设计,2009,30(10):2543-2546.
[7]郝海峰,徐海峰,叶俊.
基于Windows平台的JSPWeb服务器架设[J].
计算机与数字工程,2007,35(8):68-70.
[8]王江伟.
Apache服务器配置与使用工作笔记[M].
北京:电子工业出版社,2012:1-5.
[9]吴翔毅.
Nginx在校园网络中的应用研究[J].
福建电脑,2009,(7):103-104.
[10]C.
Nedelcu著,陶利军译.
学习NginxHTTPServer(中文版)[M].
北京:清华大学出版社,2012:103-105.
[11]X.
N.
Chi,B.
C.
Liu,Q.
NiuandQ.
X.
Wu.
WebloadbalanceandcacheoptimizationdesignbasedNginxunderhighconcur-rencyenvironment.
IEEE,2012:1029-1032.
[12]J.
Zhao,K.
S.
Trivedi.
Performancemodelingofapachewebserveraffectedbyaging.
IEEE,2011:56-61.
Hostadvice主机目录对我们的服务进行了测试,然后给PQ.hosting颁发了十大WordPress托管奖。为此,宣布PQ.Hosting将在一周内进行折扣优惠,购买和续订虚拟服务器使用优惠码:Hostadvice ,全部优惠10%。PQ.hosting,国外商家,成天于2019年,正规公司,是全球互联网注册商协会 RIPE 的成员。主要是因为提供1Gbps带宽、不限流量的基于KVM虚拟的V...
提速啦的来历提速啦是 网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑 由赣州王成璟网络科技有限公司旗下赣州提速啦网络科技有限公司运营 投资1000万人民币 在美国Cera 香港CTG 香港Cera 国内 杭州 宿迁 浙江 赣州 南昌 大连 辽宁 扬州 等地区建立数据中心 正规持有IDC ISP CDN 云牌照 公司。公司购买产品支持3天内退款 超过3天步退款政策。提速啦的市场定位提速啦主...
vpsdime怎么样?vpsdime是2013年成立的国外VPS主机商,以大内存闻名业界,主营基于OpenVZ和KVM虚拟化的Linux套餐,大内存、10Gbps大带宽、大硬盘,有美国西雅图、达拉斯、新泽西、英国、荷兰机房可选。在上个月搞了一款达拉斯Linux系统VPS促销,详情查看:vpsdime夏日促销活动,美国达拉斯vps,2G内存/2核/20gSSD/1T流量,$20/年,此次推出一款Wi...
网站监测为你推荐
竞赛搜狗拼音输入法4路由器itunesnamesgraph支持ipad孩子applephotoshop技术ps是一种什么技术??????win7如何关闭445端口如何关闭445端口,禁用smb协议google中国地图怎样用GOOLE搜中国地图用卫星看的那一种(可以看到城市和房子的)icloudiphone自己用icloud把iPhone抹掉了.激活却不是自己的id怎么破css3按钮如何在html添加一个搜索框和一个按钮
花生壳域名贝锐 google电话 flashfxp怎么用 瓦工 56折 京东云擎 evssl 圣诞节促销 hnyd 牛人与腾讯客服对话 anylink 腾讯云分析 谁的qq空间最好看 刀片服务器的优势 空间合租 免费网页申请 百度云加速 广东主机托管 酷锐 湖南铁通 更多