面的门户网站架构设计方案_第1页
面的门户网站架构设计方案_第2页
面的门户网站架构设计方案_第3页
面的门户网站架构设计方案_第4页
面的门户网站架构设计方案_第5页
已阅读5页,还剩30页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

最全面的门户网站架构设计方案

前台门户网站架构

设计方案

北京宽连十方数字技术有限公司

2012-7

目录

1设计思路.............................................................

2系统结构.............................................................

3网络规划及性能计算...................................................

3.1网络架构.........................................................

3.2网络架构说明.....................................................

3.2.1使用双防火墙双交换机做网络冗余,保障平台服务.................

3.2.2使用硬件设备负载均衡器,实现网络流量的负载均衡...............

3.3系统测算.........................................................

3.3.1系统处理能力要求.............................................

3.3.2业务处理能力要求.............................................

3.3.3系统话务模型.................................................

3.4配置核算.........................................................

3.4.1数据库服务器性能核算.........................................

3.4.2WEB服务器集群性能核算.......................................

3.4.3WEB服务器集群内存性能核算..................................

3.4.4网络带宽.....................................................

4性能模拟测试及性能推算...............................................

4.1测试环境.........................................................

4.2测试结果.........................................................

4.2.11个客户端模拟不一致线与并发请求结果..........................

4.2.210个客户端请求...............................................

4.3结果分析.........................................................

4.4根据测试结果推算.................................................

4.5设备清单.........................................................

4.5.1硬件设备配置清爸.............................................

4.5.2设备技术规格.................................................

4.6平台扩容的建议...................................................

1网站的性能瓶颈分析

网站的性能影响因素很多,下面要紧从如下4个方面进行分析说明:

1)网络仇载

a)公网负载

b)内网负载

2)WEB应用服务器性能

a)CPU

b)存储,I/O访问

c)内存

d)并发TCP/IP连接数

3)数据库服务器性能

a)数据库参数配置

b)服务器性能(CPU、内存、存储)

c)数据结构的合理性

4)不一致WEB应用的处理方式而对不一致的性能瓶颈

a)关于静态的网站:

静态的HTML页面严格地由标准的HTML标示语言构成,并不需要服务器端即时运算生

成。这意味着,对个静态HTML文档发出访问请求后,服务器端只是简单地将该文档传

输到客户端。从服务器运行的那个时间片来看,这个传输过程仅仅占用了很小的CPU资源。

关于静态HTML的访问瓶颈为:网络带宽、磁盘I/O与cache(高速缓冲存储器)。

b)关于动态页面

由于服务器解析动态页面务必在其传输到客户端前就通过服务器来进行解释,这样就

会给应用服务器添加额外的性能消耗,假如进一步要访问数据库,则会增加数据,车服务器

的性能消耗,则动态页面还有额外的瓶颈:应用服务器的性能,数据库服务器的性能。

2系统架构设计

2.1总体思路

为提高网站的高并发性能,提高开发效率及运营效率,要紧按如下几个思路进行规划设计:

2.1.1负载均衡

1)四层交换负载均衡:

使用负载均衡器来实现硬件级的四层交换负载均衡,或者使用LVS来实现软件的四层交换负载

均衡。

2)通过第三方软件来实现负载均衡,同时实现页面请求的缓存。

通过Nginx实现反向代理服务器集群,同时搭建squid集群以作为静态页面与图片的缓存。

3)通过web服务器的配置来实现负载均衡

即通过apache或者是Nginx将客户请求均衡的分给tomcat1,tomcat2....去处理。

2.1.2WEB应用开发架构思路

1)应用开发实现MVC架构三层架构进行web应用开发

2)页面尽可能静态化以减少动态数据访问,假如是资讯类的网站能够考虑使用第三方开源

的CMS系统来生成静态的内容页面。

3)使用Oscache实现页面缓存,使用Memcached实现数据缓存

4)使用独立的图片服务器集群来实现图片资源的存储及WEB请求

2.1.3数据存储的设计思路

1)数据库拆分,把生产数据库与查询数据库分离,对生产数据库使用RAC实现数据库的集

群。

2)使用高效的网络文件共享策略,使用图片服务器来实现页面的图片存储。

2.1.4不一致网络用户访问考虑

1)通过引入CDN来解决不一•致网络服务商的接入速度问题,通常只能解决静态页面的访问问题。

2)在不一致运营商机房部署服务器,通过镜像技术来实现不一致网络服务商的接入速度问题。

2.2总体架构

2.2.1网站的系统分层架构

硬件四层交换负载均衡器

软件四层交换LVS

NginxproxySquid

负载均衡反向代理软件

(数据缓存)SquidcacheNginxcache

WEB服务

(Apache+tomcatApacheTomatTomat

负假均衡)

Control

MVC

应用架构ModelView

WEB服务器

架构

数据持久层页面缓存数据缓存

应用级缓存

(ibatis)(OSCache)(Memcachcd)

文件

数据库生产数据库查询数据库

数据存储共享NFSHDFS

2.2.2网站的物理架构

MrMrJiiyMT(NGJNX)

服务器1服务器2服务器3服务特u

服务叁I服务器2

图片服务器集群Web服务器集群AWeb服务器集群BSquid服务器集群

2.2.3网站的开发架构

消息

通讯层业务层持久层数据层

中心

WEB服务器

MMS

ibatis

VVAP

PUSH

短信群

r1r

发器

WEBApacheTomatTomat

容器

彩信群

发器

后台支HTML静统计支撑业务支撑

撑模块态化模块模块模块

2.2.4网络拓扑结构

备注:

1)使用双防火墙双交换机做网络冗余,保障平台服务

使用双防火墙通知接通2线路互联网接入,设备之间使用VRRP协议,在任何一人防火墙、

互联网发生故障后均可自动将流量切换到另一端,保证网站的正运行,设备或者网络恢复后,

自动恢复。

使用双千兆交换机分别接在2台防火墙上,当某台设备或者者网络链路发生故障后,好

设备自动接管已标设备的工作,不影响网站的整体运行,根据业务及真实服务器的数量,交

换机能够随时增加。

2)使用硬件设备负载均衡器,实现网络流量的负载为衡

使用硬件设备负载均衡错,将网络流量均衡的分担到WEB服务器集群各节点服务器,保

障平台服务器资源均衡的使用。

3)使用代理服务器,实现软件级的网络负载均衡。

4)数据库服务器分离成生产数据库集群与查询数据库集群,实现生产读写与后台查询统计

进行分离,同时生产数据库使用rac技术进行

2.3架构涉及技术的详解

2.3.1负载均衡

1.基于DNS的负载均衡-一个域名绑定多个IP

DNS负载均衡技术是最早的负载均衡解决方案,它是通过DNS服务中的随机名字解析来实现

的,在DNS服务器中,能够为多个不一致的地址配置同一个名字,而最终查询这个名字的客户机将

在解析这个名字时得到其中的一个地址。因此,关于同一个名字,不一致的客户机会得到不一致的

地址,它们也就访问不•致地址上的Web服务器,从而达到负载均衡的目的。

2.通过硬件四层交换实现负载均衡

在硬件四层交换产品领域,有一些知名的产品能够选择,比如Alieon、F5等,这些产品很昂贵,

但是物有所值,能够提供非常优秀的性能与很灵活的管理能力。Yahoo中国当初接近2000台服务器

使用了三四台Alteon就搞定了

3.通过软件四层交换实现负载均衡

软件四层交换我们能够使用Linux上常用的LVS来解决,LVS就是LinuxVirtualServer,他提

供了基于心跳线heartbeat的实时灾难应对解决方案,提高系统的鲁棒性,同时可供了灵活的虚拟

VIP配置与管理功能,能够同时满足多种应用需求,这关于分布式的系统来说必不可少。

一个典型的使用负载均衡的策略就是,在软件或者者硬件四层交换的基础上搭建squid集群,

这种思路在很多大型网站包含搜索引擎上被使用,这样的架构低成本、高性能还有很强的扩张性。

4.通过反向代理服务器实现负载均衡

反向代理服务器乂称之WEB加速服务器,它位于WEB服务器的前端,充当WEB服务器的内容

缓存器,反向代理服务器是针对WEB服务器设置的,后台WEB服务器对互联网用户是透明的,JIJ

户只能看到反向代理服务器的地址,不清晰后台WEB服务器是如何组织架构的。当互联网用户请

求WEB服务时,DNS将请求的域名解析为反向代理服务器的FP地址,这样URL请求将被发送到

反向代理服务器,由反向代理服务器负责处理用户的请求与应答、与后台WEB服务器交互。利用

反向代理服务器减轻了后台WEB服务器的负载,提高了访问速度,同时避免了因用户直接与WEB服

务器通信带来的安全隐患。

目前有许多反向代理软件,比较有名的有Nginx与Squid。

1)Squid

Squid是一个开源的软件,利用它的反向代理技术能够提高网站系统的访问速度,卜.面将重点

介绍Squid反向代理的实现原理与在提高网站性能方面的应用。

之间,组织架构如下图:

客户端请求访问WEB服务时,DNS将访问的域名解析为Squid反向代理服务器的IP地址,

这样客户端的URL请求将被发送到反向代理服务器。假如Squid反向代理服务器中缓存了该请求

的资源,则将该请求的资源直接返回给客户端,否则反向代理服务器将向后台的WEB服务器请求

资源,然后将请求的应答返回给客户端,同时也将该应答缓存在本地,供下一个请求者使.用。

Last-Modified:告诉反向代理页面什么时间被修改

Expires:告诉反向代理页面什么时间应该从缓冲区中删除

Cache-Control:告诉反向代理页面是否应该被缓冲

Pragma:用来包含实现特定的指令,最常用的是Pragma:no-Cache

注:DNS的轮询机制将某一个域名解析为多个IP地址。

2)Nginx

在国内,已经有新浪博客、新浪播客、搜狐通行证、网易新闻、网易博客、金山逍遥网、金山

爱词霸、校内网、YUPOO相册、豆瓣、迅雷看看等多家网站、频道使用Nginx服务器。

Nginx特点如下:

1)工作在OSI模型的第7层(应用层)

2)高并发连接

官方测试能够支撑5万并发连接,在实际生产环境中跑到2〜3万并发连接数。

3)内存消耗少

在3万并发连接下,开启的10个Nginx进程才消耗150M内存(15M*10=150M)。

4)配置文件非常简单

风格跟程序一样通俗易懂。

5)成本低廉

Nginx为开源软件,能够免费使用。而购买F5BIG-IP、NetScaler等硬件负载均衡交换机

则需要十多万至几十万人民币。

6)支持Rewrite重写规则

7)内置的健康检查功能

假如NginxProxy后端的某台Web服务器宕机了,不可能影响前端访问。

8)节约带宽

支持GZIP压缩.能够添加浏览器本地缓存的Header头。

9)稳固性高

用于反向代理,宕机的概率微乎其微。

3)Nginx+squid页面缓存来实现反向代理负载均衡

通过Nginx反向代理与squid缓存实现动静分离的架构图如下所示:

Nginx反向代理负载均衡

动静分离架绕架构图

用户访问

http://www.abc.com

负载均衡

席被线存的URI分

到Squi朋艮务器群)

192.168.1.2www.abc.com

Squi球命中»谙求N«inx负羲均衡器

阴途:送李)或者直接通过Squid自身的

cache_peer轮询多台We即,

5.Apache+tomcat集群实现负载均衡。

使用apache与多个tomcat配置一个能够应用的web网站,用Apache进行分流,把请求按照权

重与当时负荷分tomcat1,tomcat2...去处理,要达到下列要求:

1)同时还要配置session复制,也就是说其中任何一个lonical的添加的session,是要同步复制

到其它lomcal,集群内的lomcal都有相同的session,并为系统(包含Apache与tomcat)

设定Session超时E寸间。

2.3.2缓存

1.系统架构方面的缓存

1)Squid缓存

架构方面使用Squid进行缓存。

注:SQUID使用了LM算法,LM就是页面Header里时间(Date)与Last-Modified时间

的差。Date通常是Squid从后面取页面的时间,Last-Modified通常是页面生成时间。

2)Nginx的缓存功能

Nginx从0.7.48版本开始,支持了类似Squid的缓存功能:

缓存把URL及有关组合当作Key,用md5编码哈希后储存;

Nginx的Web缓存服务只能为指定URL或者状态码设置过期时间,不支持类似Squid的PURGE

指令,手动清除指定缓存页面;

使用MMAP实现,设置的缓存区大小不能超过物理内存+SWEB的值

location/mem/{

if($uri〜"A/mem/([0-9A-Za-z_]*)$")

(

set$memcached_key"$1";

memcached_pass:11211;

?

expires70;

}

Nginx目前没有写入memcached的任何机制,因此要往memcached里写入数据得用后台的动

态语言完成,能够利用404定向到后端去写入数据。

〃疝IX会非常老实地将链接形式储存到文件系统中,这样关于一个链接,能够很方

便地查阅它在缓存机器上的缓存状态与内容,也能够很方便地与别的文件管理器如

rsync等配合使用,它完完全全就是一个文件系统结构。

2.应用程序方面的缓存

1)OSCache

OSCache是当前运用最广的缓存方案,JBoss,Hibernate,Spring等都对其有支持。

OSCache的特点:

2)拥有全面的API:OSCacheAPI同意你通过编程的方式来操纵所有的OSCache特性。

3)永久缓存:缓存能被配曾写入硬树,因此同意在应用服务器的多次生命周期间缓存划律开销

昂贵的数据。

4)支持集群:集群缓存数据能被单个的进行参数配置,不需要修改代码。

5)缓存过期:你能够有最大限度的操纵缓存对象的过期,包含可插入式的刷新策略(假如默认

性能不能满足需要时)。

2)Memcached

memcached是高性能的分布式内存缓存服务器。通常的使用目的是,通过缓存数据库查询结果,

减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。

Memcached是以Key/Value的形式单个对象缓存。

浏览器

tt

应用服务器

memcached

—►苜次访问:从RDBMS中取得数据保檐(Jmemcached

第二次后:从memcached中取得数据显示页面

3)自主开发的内存数据缓存服务

a)独立进程方式的缓存服务

关于一些常用的动态数据通过开发程序服务缓存在内存中,提供给其他子系统调用,如下面

的数据就能够通过这样方式进行缓存。

1)用户基本信息及状态的信息缓冲

2)列表缓存,就像论坛里帖子的列表

3)记录条数的缓存,比如一个论坛板块里有多少个帖子,这样才方便实现分页,

4)复杂一点的group,sum,count查询,比如积分的分类排名

b)集成在WEB应用中的内存缓存

在web应用中关于热点的功能,考虑使用完全装载到内存,保证绝对的响应速度,关于需要

频繁访问的热点数据,使用集中缓存(多个能够使用负载均衡),减轻数据库的压力,比如:很多

配置信息,操作员信息等等。

2.3.3页面静态化

静态的HTML页面严格地由标准的HTML标示语言构成,并不需要服务器端即时运算生成。

这意味着,对一个静态HTML文档发出访问请求后,服务器端只是简单地将该文档传输到客户端。

从服务器运行的那个时间片来看,这个传输过程仅仅占用了很小的CPU资源。

页面静态化就是使用效率最高、消耗最小的纯静态化的html页面来替换动态页面。我们尽可

能使我们的网站上的页面使用静态页面来实现,这个最简单的方法事实上也是最有效的方法。

同时使用第三方开源的CMS系统来实现网站内容的管理。关于大量内容同时频繁更新的网

站,我们无法全部手动去挨个实现页面静态化,因此我们需要引入常见的信息公布系统(CMS),

信息公布系统(CMS)能够实现最简单的信息录入自动生成静态页面,关于一个大型网站来说,拥

有•套高效、可管理的CMS是必不可少的。

在进行html静态化的时候还能够使用一种折中的方法,就是前端继续使用动态实现,在一定

的策略下通过后台模块进行定时把动态网页生成静态页面,并定时推断调用,这个能实现很多灵

活性的操作。

为了提高静态HTML的访问效率,要紧能够对下列几个方面进行优化:网络带宽、磁盘I/O

与cache(高速缓冲存储器)。

2.3.4数据库配置及优化

1.数据库集群

对生产数据库使用RAC实现数据库的集群。

2.数据库及表的散列

把生产数据库与查询数据库进行分离,针对系统业务数据的特点,把大的表进行拆分,关于访

问较多的表使用分区表。

使用读/写数据库分离,随着系统变得越来越庞大,特别是当它们拥有很差的SQL时.一台数

据库服务器通常不足以处理负载。但是多个数据库意味着重复,除非你对数据进行了分离,更通常

地,这意味着建立主/从副本系统,其中程序会对主库编写所有的Update、Insert与Delete变更语句,

而所有Select的数据都读取自从数据库(或者者多个从数据库)。

尽管概念上很简单,但是想要合理、精确地实现并不容易,这可能需要大量的代码工作。因

此,即便在开始时使用同一台数据库服务器,也要尽早计划在PHP中使用分离的DB连接来进行读写

操作。假如正确地完成该项工作,那么系统就能够扩展到2台、3台甚至12台服务器,并具备高可

用性与稳固性。

3.拥有良好的DB配置与备份

很多公司都没有良好的备份机制,也不明白如何恰当地完成这项工作。只有imp是不够的,还

需要进行热备份,从而得到超快的速度与超高的可靠性。

另外,在将所有备份文件从服务器上转移出来之前要进行压缩与加密。另外还要确保搦有设计

合理的、有用的关于安全、性能与稳固性问题的设定,包含防止数据败坏,其中很多设定都是非常

重要的。

2.3.5文件存储

1.文件共享

1)HDFS(GFS)

HDFS是ApacheHadoop项目中的一个分布式文件系统实现,基于Google「2003年10月发

表的GoogleFileSystem(GFS)论文。

■特性

1)硬件要求低

2)高容错性

3)易可扩展

4)配置简单

5)超大文件

HDFS使用master/slave架构。

一个HDFS集群是由一个Namenode与一定数R的Datanodes构成。

HDFSArchitecture

2)NFS与GFS比较

首先从它们的功能上进行分析。NFS即网络文件系统,是由SUN公司开发的。它是FreeBSD

支持的文件系统中的一种,同意一个系统在网络上与它人共享目录与文件。通过使用NFS,用户

与程序访问远端系统上的文件就像访问本地文件一样。

而GFS是Google为了满足本公司迅速增长的数据处理要求而开发的文件系统。GFS是一个

可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它是针对Google

的计算机集群进行设计的,专门是为Google页面搜索的存储进行了优化。

因此从功能上看,它们两者是完全不一致的概念。

其次从结构上比较,N「S至少包含两个要紧部分:台服务器,与至少一台客户机。被共享

的目录与文件存放在服务器上,客户机远程地访问储存在服务器上的数据。

GFS则由•台Master(通常有几台备份)与若干台TrunkServer构成。GFS中文件备吩成固定

大小的Trunk分别存储在不一致的TrunkServer±,每个Trunk有多份(比如3)拷贝,也存储在不

一致的TrunkServer上。Master负责保护GFS中的Metadata,即文件名及其Trunk信息。客户端

先从Master上得到文件的Metadata,根据要读取的数据在文件中的位置与相应的TrunkServer

通信,获取文件数据。

再从跨平台性上,NFS的基本原则是“容许不一•致的客户端及服务端通过一组RPCs分享相

同的文件系统”,它是独立于操作系统的,容许不一致的操作系统共同地进行文件的共享。

而GFS则没有这一特点,文件只能被集群系统中的PC所访问,而且这些PC的操作系统通常

是Linux。

最后从规模上比较,HDFS只应用在大批量的数据共享上。目前Google拥有超过200个的

GFS集群,其中有些集群的PC数量超过5000台。集群的数据存储规模能够达到5个PB,同时集

群中的数据读写吞吐号可达到每秒40G。

而NFS通常没有这么巨大的规模。

2.文件的多服务器自动同步

使用Linux2.6内核的inotify监控Linux文件系统事件。

利用开源的Isync监听某一目录,假如目录内文件发生增、删、改,利用Rsync协设自动同

步到多台服务器。

3.图片服务器分离

使用独立的图片服务器不但能够避免以上这个情况,更能够对不一致的使用性质的图片设置

不一致的过期时间,以便同一个用户在不一致页面访问相同图片时不可能再次从服务器(基因此

缓存服务器)取数据,不但快速,而目.还省了带宽。还有就是,关于缓存的时间上,亦能够做独

立的调节。

2.3.6网络问题解决方案

你不可能要求所有的使用人员,都与你的服务器在一个运营商的网络内,而不一致网络之间访

问速度会很慢,我们能够使用镜像网站与引入CDN来解决这一问题。

1.智能DNS解析

我们能够在不一致的网络运营商部署web服务器,通过linux上的rsync工具自动同步到不一致

网络接入商的web服务器上,以作为主站的镜像。

然后通过配置智能DNS解析来引导不•致网络的访问用户到对应的网络运营商的web服务器。

2.CDN

假如有足够的投资,也能够使用CDN(内容分发网),把静态内容(静态页面与图片)进行CDN

缓存,以减轻服务器压力。

CDN的全称是ContentDeliveryNetwork,即内容分发网络。它采取了分布式网络缓

存结构(即国际上流行的webcache技术),其目的是通过在现有的Internet中增加

一层新的网络架构,将网站的内容公布到最接近用户的网络“边续使用户能够就

近取得所需的内容,解决hitemel网络拥挤的状况,银高用户访问网站的响应速度。

从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等原因所造成的

用户访问网站响应速度慢的问题。(也就是一个服务器的内容,平均分部到多个服

务器上,服务器智能识别,让用户获取离用户最近的服务器,提高速度。

目前,国内访问量较高的大型网站如新浪、网易等,均使用CDN网络加速技术,

尽管网站的访问巨大,但不管在什么地方访问都会感受速度很快"而通常的网

站假如服务器在网通,电信用户访问很慢,假如服务器在电信,网通用户访问

又很慢。

2.3.7WEB应用开发架构设计思路

1.基于MVC的三层应用开发架构

应用开发实现MVC三层架构进行web应用开发,使用ibatis作为持久层框架,c3Po作为数据库连

接池。

iBATIS是一个能够设计与实现更好的Java应用程序持久化层的框架。iBATIS把对象与存储过程

或者者使用XML描述符的SQL语句进行了关联。简单是iBATIS最大的优势

■ibatis-使用ibatis的十个理由

1.至少能操作10种以上的数据库

2.可配置的caching(包含从属)

3.支持DataSourcelocaltransactionmanagemen与globaltransaction

4.简单的XML配置文档

5.支持Map,Collection,List与简单类型包装(如Integer,String)

6.支持JavaBeans类(get/set方法)

7.支持复杂的对象映射(如populatinglists,couplexobjectmodels)

8.对象模型从不完美(不需要修改)

9.数据模型从不完美(不需要修改)

10.你已经明白SQL,为什么还要学习其他东西

MVC架构示意

viewsmodel

2)Struts架构

丰Struts受理

范围的请求

[总控%器接:这个HTT^i金]

射到具体的Action中]

Action返回AdionForward对象

2.面向服务的应用架构

面向服务的应用架构是指构建可分布式的、去中心化的服务器平台,以提供许多不一致的应用,

数据库被分成很多个小部分,围绕每个部分都会创建一个服务接口(API),同时该接口是访问数据库

的唯•途径。最终数据库演变成•个非常庞大的共享资源。

这种架构是松散耦合的,同时围绕着服务进行构建。面向服务的架构提供给他们隔离特性,一

个服务可能有很多台数据库服务器,他们之间的数据是相通的,而对外他们的接口只有一个,外面

是无法明白这个服务后面的数据组织是如何搭建的。

这样各类服务如插件一样构成了一个开放的平台,这样团队的规模就会比较小,比较灵活。

注Amazon就是使用了这种架构来构建的,它拥有上千台服务器。

2.4系统软件参数优化

在一定的架构基础上,要提高并发处理能力则需要调整服务器的操作系统内核参数、web服务

器(tomcat的参数、apache的参数、Nginx的参数),以使其性能达到最优化。

2.4.1操作系统优化

调整系统的内核参数,增大连接数及TCP/IP的超时设置。

Linux系统中:

在/etc/sysctl.conf配置文件中增加如下内核参数:""

net.ipv4.tcp_syncookies=1

net.ipv4.tcp_tw_reuse=1

net.ipv4.tcp_tw_recycle=1

net.ipv4.tcp_fin_timeout=5

2.4.2tomcat服务器优化

增大并发连接数,调整内存参数的设置。

1、JDK内存优化:

当应用程序需要的人存超出堆的最大值时虚拟机就会提示内存溢出,同时导致应用服务崩溃。

因此通常建议堆的最大值设置为可用内存的最大值的80%oTomcat默认能够使用的内存为

128MB,在较大型的应用项目中,这点内存是不够的,需要调大.

Tomcat默认能够使用的内存为128MB,Windows下,在文件/bin/catalina.bat,Unix下,在文

件/bin/catalina.sh的前面,增加如下设置:JAVA_OPTS='-Xms【初始化内存大小】-Xmx【能

够使用的最大内存】‘需要把这个两个参数值调大。比如:JAVA_OPTS='-Xms256m-Xmx512m'

表示初始化内存为256MB,能够使用的最大内存为512MB.

2、连接器优化:在tomcat配置文件server.xml中的配置中,与连接数有关的参数有:

maxThreads:Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大

的线程数。默认值150。

acceptCount:指定当所有能够使用的处理请求的线程数都被使用时,能够放到处理队列中

的请求数,超过这个数的请求将不予处理。默认值10。

minSpareThreads:Tomcat初始化时创建的线程数。默认值25。

maxSpareThreads:一旦创建的线程超过这个值,Tomcat就会关闭不再需要的soc<et线程。

默认值75。

enableLookups:是否反查域名,默认值为true。为了提高处理能力,应设置为false

connnectionTimeout:网络连接超时,默认值600C0,单位:亳秒。设置为0表示永不超时,

这样设置有隐患的。通常可设置为30000毫秒。

maxKeepAliveRequests:保持请求数量,默认值"00。bufferSize:输入流缓冲大小,默

认值2048byteso

compression:压缩传输,取值on/off/force,默认值off。其中与最大连接数有关的参数为

maxThreadsacceptCounto假如要加大并发连接数,应同时加大这两个参数。

webserver同意的最大连接数还受制于*作系统的内核参数设置,通常Windows是2000个

左右,Linux是1000个左右。

2.4.3apache服务器优化

加大并发数量与关闭不需要的模块。由于apache非常消耗内存,尽量轻量化。

Apache在配置ContentType的时候能够尽量少支持,尽可能少的LoadModule,保证更高的系

统消耗与执行效率

同时配置apache与tomcat的组合使之能作到动静分离,apache处理静态页面,tomcat处理动态页面。

2.4.4Nginx服务器的优化

workejprocesses:该参数的值最好跟cpu核数相等,能够发挥最大性能,假如nginx所在服务

器为2颗双核cpu,则建议设定为4,

3Web服务架构评测

要紧对基于tomcat与nginx+tomcat的web服务器的处理性能进行测试,以作为不一致性能要求

下架构选型的根据

3.1测试环境

3.1.1网络环境

1.内网带宽

>千M内网。

>内网ping包延迟:v0.1ms

2.网络拓扑示意

3.1.2服务器配置

设备硬件配置操作系统

IBMX3650

CPU:Intel(R)Xeon(R)E51502.66GHz2咳*2

NginxRcdhatlinjxas4

内存:4G

千兆网卡

HpDL580G4

CPU:Intel(R)Xeon(TM)3.40GHz4核*2

Tomcat1Redhatlinjxas5

内存:8G

千兆网卡

HpDL580G4

CPU:Intel(R)Xeon(TM)3.40GHz4核*2

Tomcat2Redhat1inJXas5

内存:8G

千兆网卡

HpDL580G5

C1JU:Intel(K)Xeon(K)E73101.60GHz4核*2

TestiRedhat1inJXas5

内存:4G

千兆网卡

IBMX3650

CPU:Intel(R)Xeon(R)E51502.66GHz2咳*2

Test2Redhatlinjxas4

内存:4G

千兆网卡

3.1.3软件环境

1.操作系统网络参数优化

用做测试的各台服务器,均在/etc/sysctl.conf配置文件中增加如下内核参数:

net.ipv4.tcp_syncookies=1

net.ipv4.tcp_tw_reuse=1

net.ipv4.tcp_tw_recycle=1

net.ipv4.tcp_fin_timeout=5

2.Nginx设置

要紧配置如下:

userwwwwww;

worker_processes4;

error_log/usr/local/nginx/logs/nginx_error.logdebug;

pid/usr/local/nginx/logs/nginx.pid;

worker_rlimit_nofile51200;

events

(

useepoll;

workerconnections51200;

)

{

includemime.types;

defaultjypeapplication/octet-stream;

#charsetgb2312;

server_names_hash_bucket_size128;

client_headerbuffersize32k;

large_client_header_buffers432k;

sendfileon;

tcp_nopushon;

keepalivejimeout1;

tcp_nodelayon;

#gzipon;

#gzip_min_length1k;

#gzip_buffers416k;

#gzip_comp_level2;

#gzip_typestext/plainapplication/x-javascripttext/cssapplication/xml;

#gzip_varyon;

upstreamtomcats{

server7:8081;

server6:8081;

#server1:8080;

)

server

(

listen81;

server_namelocalhost;

proxy_redirectoff;

location/{

)

#后端的Web服务器能够通过X-Forwarded-For获取用户真实IP

#proxy_set_headerX-Forwarded-For$remote_addr;

#location/{

#if($request_uri".*\.(js|css|gif|jpg|jpeg|png|bmp|swf)$")

#{

#}

#if($requesl_uri〜*"A/view/(.*)$")

#{

#}

#}

#定义日志格式

logjormataccess'$remote_addr-$remote_user[$time_local]$request

#打日志

accessjog/usr/local/nginx/logs/access.logaccess;

#同意客户端请求的最大的单个文件字节数

client_max_body_size10m;

#缓冲区代理缓冲用户端请求的最大字节数能够懂得为先储存到本地再传给用户

client_body_buffer_size128k;

#跟后端服务器连接的超时时间—发起握手等候响应超时时间

proxy_connect_timeout600;

#连接成功后一等候后端服务器响应时间一事实上已经进入后端的排队之中等候处理

proxy_read_timeout600;

#后端服务器数据回传时间一就是在规定时间之内后端服务器务必传完所有的数据

proxy_send_timeout600;

#代理请求缓存区—这个缓存区间会储存用户的头信息以供Nginx进行规则处理—通常

只要能储存下头信息即可

proxy_buffer_size8k;

#同上告诉Nginx储存单个用的几个Buffer最大用多大空间

proxy_buffers432k;

#假如系统很忙的时候能够申请更大的proxy_buffers官方推荐*2

proxy_busy_buffers_size64k;

#proxy缓存临时文件的大小

proxy_temp_file_write_size64k;

)

)

3.Tomeat设置

要紧配置如下:

>Tomcat5.5

>MaxThread500

>MinSpareThread25

>MaxSpareThread75

>Xmx1740M

4.Java环境

>使用jdk1.6_03启动两个Tomcat。

3.2测试结果

3.2.1单个TOMCAT的WEB服务器

N客户请求间隔测试服占用服务器持续平均速完成

线程数结果说明

0数次数时间务器内存负载时间度请求

从第82秒开始,tomcat占川内存1.1g,但CPU资源被tomcat耗尽,服务器

2000-«12986106

11500Testi1.1G>15082秒负载急利升高,top显示已达150,服务器停止响应客户端请求,客户端请求

万秒条/秒万

速度急剧下降,错包率100%,测试被迫中断。

Testi2884765137

从第280秒左右开始,tomcat占用内存到达Xmx指定上限1.7g,Testi,Test2

20025亳秒条/秒万

225001.7G<6请求速度急剧下降.出现错包,错包率超过>6%,且仍在增加,测试终止.tomcat

万秒Test22934123120

抛出wjava.lang.OutOfMemoryError:GCoverheadlimitexceeded"特殊。

秒条/秒万

Testi4222863120

服务端队第400秒左右开始,tomcut占用内存到达Xmx指定上限1.7g,Tesll、

20050%秒条/秒万

325001.7G<3Tost2请求速度急剧下降,开始出现大任错包,422秒以后的错包率超过4.3峪

万秒

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论