- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于nginxtomcatredis高性能Java Web开源架构
基于nginxtomcatredis高性能Java Web开源架构
摘 要:Java Web最常用的服务器是Tomcat,但是Tomcat处理静态资源能力有着缺陷,本文介绍了使用tomcat集群加nginx作为web服务器,同时nginx做负载均衡,加上redis内存数据库作为session存储和数据库缓存的架构方案,所有这些技术均为开源软件,免除了授权的问题。
关键词:Tomcat;nginx;redis;开源
中图分类号:TP311.52
Tomcat快速、高效、易于部署,并且开源,是Java Web最常用的开源服务器。但是在处理静态资源上,Tomcat相对于现在流行的高性能Web服务器,如nginx、lighttpd尚有不小的差距。因此,在追求高并发、重负载的场合,可以在Tomcat集群前加上nginx处理静态资源以及负载均衡。同时,对于高并发的场合,数据库的查询性能很容易成为瓶颈,使用连接池技术加上内存数据库redis作缓存可以大幅度的提升查询性能。
1 Tomcat集群和调优
Tomcat建议安装在64位Linux系统下,在32位系统中,即使某些操作系统可以使用超过4G,JVM的也限制了最多只能够使用2G内存。Tomcat容器的默认配置吞吐量也不能够满足高并发服务的需要,因此需要更改Tomcat的配置,修改server.xml文件。
Connector port=8080 protocol=HTTP/1.1
URIEncoding=UTF-8 minSpareThreads=25 maxSpareThreads=75
enableLookups=false disableUploadTimeout=true connectionTimeout=20000
acceptCount=300 maxThreads=300maxProcessors=1000 minProcessors=5
useURIValidationHack=false compression=on
compressionMinSize=2048
compressableMimeType=text/html,text/xml,text/javascript,text/css,text/plain
redirectPort=8443
/
其中URIEncoding=”UTF-8”表示可以解析含有中文的URL,acceptCount是等待队列,maxThreads为最大线程数,即最大并发数。
单个Tomcat处理能力有限,在现在的服务器配置情况下,常常不能够利用完CPU和内存就达到最大负载,此时,可以使用Tomcat的纵向集群,即单台服务器运行多个Tomcat。如果还不能达到高并发的需要,那么就需要使用Tomcat的横向集群,即多台服务器运行多个Tomcat。
集群方案可以使用Tomcat自带的cluster方式,多个Tomcat间自动实时复制session信息,配置简单。但该方案的效率比较低,在高并发场合下表现并不好。另一种方案是利用nginx的基于访问IP的hash路由策略,保证访问的IP始终被路由到同一个tomcat上。以单服务器Tomcat集群为例,需要修改Tomcat的三处端口。首先是修改Tomcat的关闭端口,每个Tomcat不能重复:
然后修改Tomcat的监听端口,同样不能重复:
Connector port=8080 protocol=HTTP/1.1 connectionTimeout=20000
redirectPort=8443 /
第三处端口修改Tomcat的连接端口:
最后Engine元素增加jvmRoute属性
2 nginx作负载均衡和动静态分离
nginx是一个高性能的HTTP和反向代理服务器,处理静态资源的能力得到了众多高并发Web站点的考验,nginx可以按照调度规则实现动态、静态页面的分离,可以按照轮询、ip hash、URL hash、权重等多种方式对后端服务器做负载均衡。使用nginx在Tomcat的前端作反向代理,nginx处理如html、css、js、图片等静态资源,而将动态的请求转发给Tomcat集群进行处理,从而充分的结合nginx和Tomcat的长处,分别处理静态和动态资源。
nginx的负载均衡配置配置如下所示:
upstream web_server {
#ip_hash;
server :8080 max_fails=3 fail_timeout=30s;
server :8081 max_fa
文档评论(0)