Web性能优化

2024-06-21

Web性能优化(精选10篇)

Web性能优化 篇1

1 HTTP请求优化

减少页面的HTTP请求次数是首先要做的一步, 这是改良初次访问用户等待时间的最重要的方法。

1.1 图片地图

在站点导航中, 最常见的应用就是超链接, 它通常带有一些文本, 并被关联到目标URL上。一种更为没关的选择是将超链接关联到图片上, 例如在导航栏或按钮中。如果是以这种形式关联多个带有超链接的图片, 使用图片地图既能减少HTTP请求, 又无需改变页面外观感受。

图片地图 (Image Map) 允许你在一个图片上关联多个URL, 目标URL的选择取决于用户单击了图片上的哪个位置。获取图片地图的时间比获取为每个超链接使用分离图片的导航时间快很多, 这是因为图片地图减少了HTTP请求。

1.2 内联图片

内联图片是指在Web页面中包含图片但无需任何额外的HTTP请求, 它允许将小块数据内联为立即数, 数据就在其URL自身之中, 格式如下:

示例:

data:URL模式大多数用于内联图片, 也可以用在任何需要指定URL的地方, 如:script和a标签中。

1.3 合并脚本和样式表

大多数Web站点, 都会用到Java Script脚本和层叠样式表, 通常把脚本和样式表分别保存在独立的.js和.css文件中, 然后在Web页面中引用。为了符合模块化的开发原则, 通常不会将Java Script代码和CSS代码放在同一个文件中。分散保存的Java Script代码应该合并在一个文件中, 样式表也应该合并, 这样可以使用户在浏览网页时只需下载一个.js或者.css文件, 这样减少了HTTP请求, 从而减少响应时间, 提高访问速度。

2 客户端缓存优化

使用客户端缓存可以优化Web性能, 减少用户等待的时间。减少HTTP请求的方式可以明显提高用户首次访问Web站点的速度, 客户端缓存的使用, 对于页面的首次访问是不会减少响应时间的, 对性能的提高会在再次访问同一个页面的时候体现出来。

在设计Web页面的时候, 首次访问的响应时间并不是唯一需要考虑的。如果这样, 可以不在页面上放置任何图片、脚本和样式表, 就能够把减少HTTP请求发挥到极致。然而, 我们都知道, 图片、脚本和样式表可以加强用户体验, 但是又会让页面的加载时间更长。

通过对脚本, 样式表, 图片和Flash使用一个长久的Expires头, 使这些组件被缓存, 就使得在浏览器浏览后续的页面时避免了不必要的HTTP请求。Web服务器使用Expires头告诉Web客户端它可以使用一个组件的当前副本, 直到指定的时间为止。如:

它表示浏览器该响应的有效性持续到2012年4月22日为止。如果为页面中的一个图片返回了这个头, 浏览器在后续的页面浏览中会使用缓存的图片, 将HTTP请求的数量减少。

3 压缩技术

除了减少和限制不必要的HTTP请求来解决响应时间的问题外, 还可以通过减小HTTP响应的大小, 在传输前对文件进行压缩, 进一步减少响应时间。

从HTTP 1.1开始, Web客户端就可以通过HTTP请求中的Accept-Encoding头来标识对压缩的支持:

如果Web服务器在请求的文件头中检测到上面的代码, 就会以客户端列出来的方法中的一种来压缩响应内容。Web服务器把压缩方法通过响应文件头中的Content-Encoding来返回给浏览器:

Gzip是目前最盛行也是最有效的压缩方式, 这是由GNU项目开发的一种免费的格式, 并被标准化为RFC 1952。另外一种压缩格式是deflate, 但是它的效果较差而且不太流行。

Gzip大约可以减少70%的响应大小, 目前约有90%通过浏览器传输的互联网互换支持gzip格式。Gzip压缩所有可能的文件类型, 是减少文件体积, 增加用户体验的最好方法。

4 页面元素的优化

4.1 CSS放在页面顶部

除了HTML文档外, 其他很多组件也都是呈现页面内容所必需的。Web页面的所有内容, 通常是按照他们在文档中出现的先后顺序下载的。

样式表在Web页面中放置的位置对于Web页面性能的影响是很明显的。如果把样式表放在页面底部, 实际产生的页面速度比放在页面顶部慢;将样式表放在文档顶部的head标签中, 能使页面加载得更快。

4.2 脚本置于页面底部

脚本带来的问题就是它阻拦了页面的平行下载。HTTP 1.1规范建议, 浏览器每个主机名的并行下载内容不超过两个。如果你的图片放在多个主机名上, 你可以在每一个并行下载中同时下载2个以上的文件。但是当下载脚本时, 浏览器就不会同时下载其它文件了, 即使是主机名不相同, 这是因为脚本可能使用document.write来修改页面内容, 因此浏览器会等待, 以确保页面能够恰当地布局。

脚本对Web页面的影响表现在两个方面, 一是脚本会阻塞其后面内容的呈现, 另外脚本会阻塞对其后面组件的下载。所以, 如果将脚本放在页面顶部, 页面中的所有内容都位于脚本之后, 整个页面的呈现和下载都会被阻塞, 直到脚本加载完毕。

放置脚本的最好地方是页面的底部。这不会阻止页面内容的呈现, 而且页面中的可视组件可以尽早下载, 虽然其请求时间较长, 但对页面影响很小, 可以很好提高用户的体验。

5 结语

对于Web应用开发人员来说, 在编写Web应用时注意性能问题。本文仅针对Web应用的前端性能优化作了简要分析, 提出了一些W e b站点前端性能优化技术的方法, 但还有很多与前台性能相关的问题还没有涉及到, 比如避免使用CSS表达式、减少DNS查找、精简Java Script、避免重定向、配置ETag、使用Ajax优化请求等。

Web站点的性能分析不仅仅是一种技术, 更是一门艺术。通过性能优化, 尽可能确保Web站点能够满足人们对性能方方面面的要求。

参考文献

[1]孙友仓.提高ASP.NET应用程序性能方法浅析[J].福建电脑, 2006 (10) .

[2]谭建平.Web网站系统性能优化研究及其应用[D].重庆大学, 2008 (5) .

[3]夏素霞.谈谈WEB设计中的优化方法[J].电脑开发与应用, 2002 (2) .

Web性能优化 篇2

(1)连接速度测试

用户连接到Web应用系统的速度根据上网方式的变化而变化,他们或许是电话拨号,或是宽带上网,当下载一个程序时,用户可以等待较长的时间。但如果仅仅访问一个页面就不会这样,如果Web系统响应时间太长(例如超过5秒钟),用户就会因没有耐心等待而离开。另外,有些页面有超时的限制,如果响应速度太慢,用户可能还没来得及浏览内容,就需要重新登录了。而且,连接速度太慢,还可能引起数据丢失,使用户浏览不到本来的页面。

(2)负载测试

负载测试是为了测量Web系统在某一负载级别上的性能,以保证Web系统在需求范围内能正常工作。负载级别可以是某个时刻同时访问Web系统的用户数量,也可以是在线数据处理的数量。例如,Web应用系统能允许多少个用户同时在线?如果超过了这个数量.会出现什么现象?Web应用系统能否处理大量用户对同一个页面的请求?

(3)压力测试

压力测试是测试系统的限制和故障恢复能力,也就是测试Web应用系统会不会崩溃,在什么情况下会崩溃,

web可用性测试

(1)导航测试

导航实际上是给访问者提供了一个类似地图的东西,让访问者更快捷的找到需要的东西。它描述了用户在一个页面内操作的方式,在不同的用户接口控制之间,例如,按钮、对话框、列表和窗口等;或在不同的连接页面之间。通过考虑下列问题.可以决定一个Web应用系统是否易于导航:导航是否直观?Web系统的主要部分是否可通过主页存取?Web系统是否需要站点地图、搜索引擎或其他的导航帮助?

(2)图形测试

在Web应用系统中,适当的图片和动画既能起到广告宣传的作用,又能起到美化页面

的效果。一个Web应用系统的图形可以包括图片、动画、边框、颜色、字体、背景、按钮

等。图形测试的内容有以下几个方面。

①要确保图形有明确的用途,图片或动画不要胡乱地堆在一起,以免浪费传输时间。Web应用系统的图片尺寸要尽量地小,并且要能清楚地说明某件事情,一般都链接到某个具体的页面。

②验证所有页面字体的风格是否一致。

③背景颜色应该与字体颜色和前景颜色相搭配。

Web前端开发技术以及优化研究 篇3

【关键词】Web 前端开发 开发技术 优化措施

引言:Web前端开发技术广泛应用于网页制作中,是网页制作的重要技术手段。随着网页制作水平的不断提高及技术的演变,网页开始开始由静态内容显示,逐渐转变为动态内容显示,Web前端开发技术类型越来越丰富。如:Aiax带来了无刷新数据交互,缩减了网页跳转次数,提高了Web前端应用性能,使单个页面能完成更多功能。而且HTML5越来越成熟,JavaScript应用度越来越高。但Web前端开发对代码质量要求越来越高,所以具体开发中应做好优化工作,科学调整相关参数,以缩短页面响应时间,提高运行效率。

一、Web前端开发技术

1、DOM。DOM技术在Web前端开发中发挥着重要作用,能为语言无关及WEB端提供标准API,把XML文档抽象为由节点构成的树形数据结构,能有效增强页面交互性,实现访问页面其他标准组件,实现异构访问,其设计对象是OMG,定义了表示和修改文档所需对象间的关系。

2、AJAX。AJAX技术使用DOM作动态显示和交互,解决服务器数据解析与页面数据获取,创建动态网页,能有效减少后台与服务器间的数据交互量,实现网页异步更新。因此,能减少请求信息量,使网络速度更快、更稳定。

3、CSS。CSS能用来表示HTML和XML等文件样式的计算机语言,支持大部分字体字号样式,在Web前端开发能对网页排版对象精准控制,从而提高显示效果,优化写法。而且CSS代码精简,所以网页布局调整修改和重构难度小,能有效提高开发效率和访问速度,优化SEO。

二、Web优化

虽Web前端开发技术水平在不断提高,技术类型越来越丰富,但具有应用中依然存在一些不足,影响网页访问速度和响应速度,造成网页延迟过长,所以做好Web优化非常重要。通过优化不仅能提高性能,更能优化视觉效果。下面通过几点来分析Web优化:

2.1合理控制文件大小

文件大小不仅会影响加载速度,更重要的是会影响网页响应速度及互动性能。若控件文件过大或样式过多,必然导致响应速度变慢,造成网页延迟过长,甚至导致网页崩溃,出现无响应现象。因此,要合理控制文件大小,不仅要压缩JavaSeript,且要去除一些多余html标签,通过对CSS文件和代码的优化提升运行速度,避免内联式样式,使CSS文件能快速加载,使部分页面内容能立即呈现给用户,解决以往传统技术条件下,页面长时间空白的问题,从而增强用户体验,使页面加载合情合理。

2.2合理控制HTTP请求

HTTP请求包括:使用协议、资源请求方法、资源标识符、消息首行、DNS寻址等多个方面,减少HTTP请求是提高响应速度,降低访问和资源占用时间成本的有效手段。实际上,一个完整HTTP请求处理是一个相对“漫长”,而复杂的过程。因此,HTTP请求数量越多,对宽带资源占用率越高,响应时间越长,加载速度越慢,甚至会导致页面一直读条,造成无响应。因此,要合理控制HTTP请求,通过内联文件和合并文件方式来少HTTP请求。

2.3合理控制DNS查询

DNS查询对于加载速度影响很大,实际上页面没解析一次DNS都需要消耗20-120毫秒,所以DNS查询越多,加载速度越慢,而且在解析DNS过程中,该页面任何东西都不能被加载,只有在DNS查询查询结束后,才能继续加载。因此,必须合理控制DNS查询,通过DNS查询来提升加载速度,避免多次解析DNS。

2.4减少HTTP错误

HTTP错误处理是导致页面无响应,造成页面崩溃的主要原因,将大大降低用户体验。HTTP错误大多由页面无法找到相应文件或HTTP请求不能被处理及处理时间消耗过程所导致。因此,为提升运行速度,减少无用响应,应减少HTFP错误,要对Web服务器和页面链接进行有效措施,从而减少运行中的HTTP错误。

Web前端性能优化研究及应用 篇4

截止至2013年,互联网总站数超过10亿,每秒约增加8个新网民,Web发展如此迅速,前端性能却普遍低下,就连大型互联网公司也难以幸免,例如:2011年百度推出的百度新首页,后端平均运行时间只有60ms,而前端平均运行时间却为1.3秒[1],前端性能可见一斑。尤其是在当今网速低下的环境中,优化前端就显得尤为重要。

在21世纪初,谷歌就已经开始重视前端优化,并提出了speed tracer等前端优化工具,雅虎也推出了《High Performance Web Sites》、《Even Faster Web Sites》等前端优化方案。国内,王成等人分析了浏览器与服务器的通讯过程,以优化HTTP请求为原则,从提出了一个系统的前端优化方案[2];朱云峰通过研究Ajax响应速度,以执行速度和内存使用量为优化点,对页面的Ajax请求进行了了优化[3]。上述研究各有侧重,但都没有针对浏览器的二连接限制进行优化,本文针对此,分析了影响Web前端性能的因素,在优化B/S通讯过程中的HTTP请求的同时,针对浏览器二连接限制所导致的Web前端效率低下的问题提出了连接请求调度权值模型,在该模型的基础上提出了请求调度算法SACC,并将上述优化方案与实际相结合,验证了解决方案的合理性。

1 Web前端性能瓶颈分析

1.1 B/S结构限制

从浏览器对服务器发出网页请求,到网页呈现在浏览器的过程,由下列步骤组成:

①用户在浏览器的地址栏输入网页URL。

②浏览器通过域名解析出与对应的IP地址。

③浏览器向Web服务器发送HTTP请求命令。

④服务器接收请求,根据请求确定目标资源文件。

⑤服务器发回HTTP响应,将生成的HTML文档发回给浏览器。

⑥浏览器接收并解析服务器返回的HTML文档,向服务器请求其中的资源文件。

⑦服务器接收浏览器对资源文件的HTTP请求,并返回相应的资源文件。

⑧浏览器接收资源文件,渲染页面,重排和重绘。

在B/S理论中,浏览器是与服务器通信、展现页面的主体,因此浏览器与服务器的通信过程、对页面的渲染效果等方面,成为了Web前端性能优化的关键。

1.2 浏览器二连接限制

为防止服务器拥塞,HTTP协议规定:客户端与服务器端建立的并发连接数应受到限制,在同一时刻,单个客户端与服务器建立的持久连接数不应超过两个[4]。

浏览器在以下情况出现二连接限制问题:①用户触发了网页中两个以上的Ajax请求;②用户连续发出两个请求,在服务器未对请求响应的情况下,又发出了请求,如图1所示,用户在T1时刻发出了请求1和请求2,在服务器尚未响应时,又在T2时刻发出了请求3,由于浏览器的二连接限制,请求3被阻塞,直到T6时刻浏览器才发出请求3。

2 Web优化性能方案

2.1 B/S结构优化

针对由于B/S结构对前端性能带来的影响,本文从服务器端优化、HTTP请求优化、延迟加载和Ajax优化方面给出了优化方案。

①服务器端优化

服务器端优化旨在减小浏览器对服务器发出的HTTP请求数量,优化HTTP请求的资源传输路径,尽可能减小网络资源的传输消耗,主要有以下手段:优化域名、设置合理缓存、使用CDN、Gzip压缩。

优化域名是指使用多域名策略,把页面内容分配到多个域名中,可以使页面最大限度地实现平行下载。给页面资源分配多域名其中的一个域名的原则是,保证一个资源在分配时总是分配到固定的一个域名。这样,如果资源已经在浏览器缓存,下次访问时就可以在缓存中读取,避免从其他域名再次下载资源。

设置合理的缓存是设置浏览器使用缓存来避免重复加载资源,提高资源利用率。在服务器与浏览器之间可以设置Expires、Etag头部信息等方式进行缓存。

CDN由一系列分散到不同地理位置上的服务器组成,它能够实时地根据网络流量和各节点的连接负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上,缩短了服务器与用户之间的距离,提高了资源的加载速度。

GZIP压缩是指当服务器中的网站被访问时,服务器将网页内容压缩后传输给来访的浏览器,GZIP有两个优点,一是减少存储空间,二是通过网络传输文件时,减少传输的时间。

②HTTP请求优化

HTTP请求优化是指精简浏览器请求的资源文件大小,主要手段有图片优化、压缩合并资源文件。

图片优化旨在减少图片的HTTP请求个数,使用CSS Sprites把多个图片整合到一张图片中,再用CSS的background属性进行背景定位。

压缩资源文件指通过去除多余空格、换行符、注释等来压缩HTML、CSS、Java Script文件。合并静态文件将页面中多个CSS、Java Script请求合并为一个请求,以减小客户端对资源文件的请求数量。

③延迟加载

延迟加载并不一定能减少HTTP请求数,但是却能在某些条件下或者页面刚加载时减少HTTP请求数,主要手段包括图片延迟加载和组件预加载。

图片延迟加载是指在页面刚加载的时候只加载首屏,当用户继续往后滚屏的时候才加载后续的图片,这种加载机制减小了不必要的HTTP请求数量。

预加载是一种浏览器机制,使用浏览器空闲时间来预先加载用户接下来可能会浏览的页面资源。页面提供给浏览器需要预加载的集合,浏览器载入当前页面后,会在后台下载需要预加载的页面并添加到缓存中,用户访问时,再从缓存中取,从而加速页面呈现。

④Ajax优化

Ajax优化指利用可缓存的Ajax来提高性能,Ajax的优点是由于其从服务器传输信息的异步性而为用户带来反馈的即时性。但使用Ajax并不能保证用户不会在等待异步的Java Script响应上花费时间,在许多应用中,用户是否需要等待响应取决Ajax如何使用,这时“异步”并不意为着“即时”。为提高性能,优化Ajax响应很重要,提高Ajax性能的一项重要措施是使响应具有可缓存性,减少对HT-TP的请求。

2.2 针对浏览器二连接优化

2.2.1 请求调度解决方案

有两个指标可以用来衡量网页的性能:

①文档下载完成时间TDD(Time to Download Document):是指浏览器下载网页资源文件如脚本、图片、视频等元素的时间。它与网络延时和网络带宽有关,网络延迟越小、带宽越大,TDD值越小。

②文档渲染时间TSR(Time to Start Render):是指浏览器从请求网页到向用户呈现网页所用的时间,TSR时间越短,用户感觉上等待时间越短。

浏览器的连接数目不可以更改,因此考虑在浏览器二连接限制的情况下调整多个HTTP请求的请求顺序,从而减小总体等待时间,证明如图2所示。

T5时刻得到请求1的响应,T6时刻得到请求2的响应,假设T6-T5=1,且T5时刻有等待发出的A、B、C三个HTTP请求,从请求到响应时间分别为x、y、z,并且满足大小x>y>z,x>y-1>z。在T5时刻由于请求2还未返回,因此只能发出一个请求。

方案1中,请求发送顺序为A、B、C,总等待时间从T6算起,为x+z-1;方案2中,请求发送顺序为A、C、B,等待时间为y+z,因y>x-1,所以方案1的等待时间小于方案2的等待时间,因此方案1优于方案2,由此可得出HTTP的请求顺序会影响请求效率。

针对浏览器二连接限制的优化实质上是指在多个HTTP请求的情况下,通过合理调整请求顺序,保证TDD和TSR值最小,那么此时的二连接限制优化问题就变成了队列模型的多机调度问题。

2.2.2 SACC算法设计

①TDD最小优先策略思想

上述多机调度问题具体是指:有n个独立任务P={p1,p2,…,p3},由m台相同的机器Q={q1,q2,…,qn}进行处理,作业pi所需的处理时间为ti(1≤i≤n),每个作业均可在任一台机器qi上加工处理,但不可间断、拆分。多机调度问题要求给出一种作业调度方案,使n个作业在尽可能短的时间内由m台机器处理完成。

其中n个作业等价于浏览器发出的n个请求,m台机器等价于m个并发连接通道,那么二连接限制优化就转化为寻找一种请求调度方法,使用户在m个并发连接限制下,完成n个请求花费的时间最短。

多机调度问题采用贪心策略来解决,贪心策略指当请求数大于并发连接数时,将请求按处理时间降序排序,处理时间最长的请求被优先处理,因此需构建处理时间TRP(Time to Request Processed)降序序列。

TRP由三个部分组成:①请求从浏览器到服务器的传输时间;②服务器响应时间;③请求从服务器到浏览器的传输时间。第2项时长相较于1、3项可忽略不计。在相同的网络状况和请求路径下,浏览器请求的数据越大,TRP值越大,因此可依据请求数据大小构建TRP降序序列。

②TDD与TRP综合调度策略

TDD最小优先策略虽然能得到较小的TDD值,但用户体验较差,因为通常情况下,浏览器发出的请求消耗的时间大小为:视频>图片>文本,而浏览器对网页内容的渲染速度却是:视频<图片<文本。若仅考虑TDD最小策略,会导致用户长时间看到空页面,因此需同时考虑TDD值和TSR值,设计一个综合的调度权值计算模型,以得到更优的调度方案。

在此模型中,设置两个度量属性,分别是请求对象大小P和对象渲染时间Q,在此基础上引入权重系数μ,μ决定了TDD和TSR在等待总时间中所占的比重,最后引入ω值来确定请求的发送次序。

以上公式描述如下:在等待调度的请求序列中,ω0表示请求q的调度权值,α0表示请求q的大小P,β0表示请求q所需的渲染时间Q,公式(1)表示了三者的关系,μ表示对象大小所占的权重。

公式(2)体现了TDD最小优先策略,即请求对象P较大的会被优先发送,将请求对象P0与最大请求对象Pmax相除,使α0在区间(0,1]内,保证ω0的取值尽量平滑。

公式(3)体现了TSR最小优先策略,即渲染时间小的请求会被优先发送,Qmin表示请求序列中渲染时间最小值,Q0表示请求q所需的渲染时间,与α0类似,采用两者的比率的方式保证β0取值在(0,1]内。

公式(4)表示Q0的具体计算方式,渲染时间等于对象大小S0除以此对象的渲染速度V0。

综合公式(1)、(2)、(3)得出,请求的调度权值ω越大,请求发送优先级越高,由此得到一个综合的请求调度方案,使得TDD和TSR的值最小。

3 Web性能优化实践

集智调查网站是一个面向高校的调查网站,以其案例丰富、操作简洁而受到高校师生的好评。但在使用过程中,网站前端性能问题严重,极大制约了网站的使用,本文选择将该网站作为前端性能优化对象,通过实施前端优化策略,提升其前端性能。

3.1 前端性能检测流程设计

3.1.1 选择评测工具

①使用Fire Fox的network来查看页面资源加载时间顺序和阻塞情况。

②使用Chrome的Time Line查看页面加载事件、脚本事件、渲染事件、绘制事件的情况。

③使用Chrome的profiles监测CPU使用、页面渲染、Java Script执行、CSS利用率等。

④选择YSlow对页面进行性能检测并评分,并分析造成页面性能底下的原因。

⑤利用Speed Tracer监测浏览器UI线程、渲染重排、布局板面以及Java Script执行效率。

3.1.2 设计评测流程

准备测试环境,包括清空浏览器缓存,清空DNS缓存,慢网速下测试,开启网页测试工具。启用YSlow来检测页面得分,发现85%的页面得分在70分以下,而达到前端标准的页面分数应在80分~90分之间,通过对网站整体页面检测分数,找到性能得分在65分以下(严重影响使用)的页面,进行性能问题分析。

3.2 寻找前端性能优化瓶颈

前端性能瓶颈分析如图3-4所示。

图3和图4为对调查案例页面采用Fiddler和Speed Tracer所检测到的Timeline和Connection View的数据,从图中可以分析出的前端性能瓶颈如表1所示。

3.3 B/S框架优化策略

①服务器端优化

在服务器端进行以下优化:使用Expires、ETags策略对资源缓存;开启Gzip,对资源文件进行压缩;去除HTTP 404请求。

②优化HTTP请求

对资源文件进行精简、压缩、合并成一个资源文件,图标和小图片文件使用CSS Sprites策略,由原来的十几个HTTP请求减小到一个。

③延迟加载

对于多图片页面,进行图片延迟加载处理,在用户浏览图片集时,才进行图片加载。

④Ajax优化

对多Ajax请求的页面进行Ajax缓存,减小用户重复的Ajax请求对服务器造成的压力。

3.4 SACC算法优化

为解决浏览器二连接限制优化问题,采用SACC算法来优化请求序列,在并发连接请求处添加该连接的相关信息,如请求类型、请求内容大小等,在浏览器发出该请求时,利用Java Script代码读取请求的备注信息,建立调度模型。

算发的伪代码如下:

3.5 优化前后对比

以调查案例页为例,图5优化前后页面HTTP请求对比中可以看出,页面资源请求明显减少,提高了页面响应速度,减小了对服务器的压力,加速了页面渲染,提升了用户体验。

表2优化前后的对比中可看出,加载时间和页面渲染时间的减少,提高了页面的呈现速度,脚本执行时间的降低,提高了页面响应速度和整体性能。

4 结束语

优化WEB工程师简历的小技巧 篇5

优化WEB工程师简历的小技巧

是不是要开始准备求职了呢?要知道几乎所有的雇主都希望找到更好的雇员。那么如何保证你的简历会在简历库中脱颖而出呢?其实和网站开发性能调优一样,你需要有效的“优化”你的个人简历! 相信大家对于简历的优化都有自己独到的见解和经验,也都会明白打磨个人简历的重要性,这里今天这篇文章中我们列出了10个重要的优化小技巧,希望能够帮助大家写出更好的简历,找到自己中意的公司和职位!01:要聪明的选择简历中的关键字 不要只使用固定形式的关键字,对于技术日新月异的今天,你需要添加多种不同形式的关键字到简历中,一般高科技类的招聘人员会使用不同的方式来搜索简历库中的简历,一定要保证你的简历能够尽可能多的在搜索结果中出现,比较好的方式是添加一些比较流行的关键字,比如,jQuery,Dojo,Kencha等等02:要尽可能的增加社交曝光率 在社交媒体泛滥的今天,有很多的知名社交网站或者技术社区可以帮助大家来扩展自己的知名度。国外的比如Stackoverflow,国内比如CSDN,iteye等等,如果你能够在这些网站中攒够足够的知名度的话,肯定会吸引一些用人单位的关注。03:创建自己的博客 最有效的方式来展示你的技巧和能力的方法之一就是创建自己的博客。一个知名的博客可以帮助大家更全名的了解你的专业度和知识。当然,写博客最重要的是在于坚持,但是相信对于坚持的结果绝对大于你的付出,国内很多知名的技术博客,例如:酷壳,前端观察,CSS88,GBin1等等,这些博主都在自己的领域拥有一定的知名度。04:参加各种竞赛 参加一些web相关的编程比赛绝对是提高自己web上知名度的一个好方法。很多比赛都吸引了大量眼球,这个方式能够让你的名字出现在很多雇主视野中,比如,baidu的云开发等等05:Linkedin帐号 如果长期在外企工作的话,一个Linkedin帐号和个人简历绝对有必要,作为全球最知名的专业社交网站,数以万计的公司HR和猎头都在这里寻找合适的应聘者,来自你的.同事和同学的推荐会给你的简历带来分量很重的筹码,很多猎头都直接在linked搜索需要的简历和技术人员06:保证在搜索引擎中没有你的负面消息(本文由大学生个人简历网 小编写作,请注明) 很有可能你的雇主会baidu或者google你的姓名,千万不要出现一些负面的消息,很有可能你的朋友或者同事在他们的个人博客和空间中发布了针对自己的负面言论,或者在weibo或者其它社交媒体中对你做了一些负面的评论,这些对于你的应聘来说,肯定不会带来积极的影响。07:保证简历的简洁性 给出一份非常清爽的个人技能列表,绝对会给你的简历增色不少,但是不要添加过多的内容,因为这样会让雇主很难找到重点。要知道没有哪个HR或者招聘人员会在一个简历上花费太多时间的(也许10秒,也许5分钟),你的目的就是让招聘方在最短的时间里看到你最亮最鲜明的内容,所以要不停的编辑修改简历,直到满意完美为止08:有效的总结你的技能 正如搜索引擎最看重一个web页面最顶端的内容,在你的简历里,你需要创建一个个人技能总结的部分,来吸引招聘方的眼球,你需要使用一些关键字来合理的总结你的个人技能表,不要简单的使用一些流行词语,比如,HTML5或者CSS3,应该更具体更实际的描述你熟悉的相关技能,因为可能某一个用人单位需要你对HTML5的Canvas有了解,如果使用Canvas来搜索你的个人简历,很可能找不到你的简历,自然你和这份工作就说拜拜了 你掌握了多少?09:保证简历易于打印 无论你的简历在浏览器里看起来有多么的棒,终究需是要打印出来供招聘经理使用的。如果你的简历背景浓重,肯定会是不适合打印。 下面的一些注意事项大家一定要记住: 保证你的简历是白色背景 保证在黑白打印后的阅读是清晰的 保证在300dpi的打印效果良好(每一英寸长度上有300个像素点)10:包含所有相关教育信息 通常来说,简历里添加学历及其相关院校非常正常,但是现在很多没有学历或者学位的应聘者也拥有很强大的开发实力,如果你有相关的毕业院校一定要加上,而且如果有其它的大会,讲座,培训相关的经历,请务必也添加到你的简历里,相信很多招聘方也会喜欢看到应聘人拥有丰富的培训经历

Web性能优化 篇6

在Internet飞速发展的今天,互联网已成为网上生活的基本工具,是人们获取和传播信息的重要途径,用户通过Web获取大量信息的同时,对Web应用系统的响应速度上升到最高的需求,为了提高用户的感受、降低企业和服务提供者的成本(包括提高处理速度和增加网络带宽),人们开始研究在当前的Web构架基础上如何提高Web应用系统的交互速度,调查发现大量的Web流量中,绝大部分是冗余数据,即一个位置上的多个用户要查询大量相同的内容。为减少大量Web冗余数据在网络上的传输,经过研究人员的深入探索,缓存技术是在不增加成本的前提下提高Web应用系统性能的最有效的解决方案之一。

2 缓存技术的基本原理

在计算机系统中,缓存就是开辟一个用来保存数据的空间,使用缓存,就不需要频繁的访问存储在内存或硬盘中的数据,当执行一个操作,并且将操作结果放入缓存中后,你就可以很迅速的重复访问这些数据了。

在Web应用系统中,缓存用来存储最近通过Web访问过的信息。通常,用户对Web对象的请求需要在Internet路由经过多次跳跃到达原始服务器,再从原始服务器取得所请求的对象返回给用户。Web应用系统中缓存技术的主要思想就是将Web对象(页面、图像及其它Internet内容)进行本地存储,使得这些被访问过的Web对象更靠近需要使用它们的用户,从而大大提高用户通过Web访问Internet的速度。其工作的基本原理如图1所示。图1中,1为缓存服务器接受客户浏览器的请求;2、3为缓存服务器从原始服务器获得缓存中的未存储对象(Cache Miss);4为缓存服务器存储获得的对象,并将获得的信息副本发送给客户浏览器。此后,当用户对相同的对象(网站)提出访问请求时,就由缓存服务器来满足其要求,将已经存储对象(Cache Hit)的拷贝发送给客户浏览器。

3 缓存技术在Web应用中的使用

3.1 静态Web应用中的缓存技术

静态Web应用中页面对用户的响应时间由网页内容传输的时间、Web服务器读取数据以及进行数据输出的时间组成。因此降低静态Web应用中页面的响应时间主要从这两方面着手。根据缓存所处的位置不同,可以把缓存技术分为3类:(1)客户端的缓存技术;(2)基于代理服务器的缓存技术;(3)服务器端的缓存技术。

3.1.1 客户端的缓存技术

在客户浏览器中使用缓存技术的思路很简单,把用户历史访问过的网页都缓存储在用户本地的硬盘上,在用户以后访问同样的网页时,浏览器就可以从本地硬盘中取出网页的内容,而不需要重新建立一次HTTP连接。如果该网页在服务器上有更新,则浏览器重新连接Web服务器,从Web服务器上读取新的网页的内容响应给用户,同时用新的网页去置换缓存中对应的过期的缓存页面。在此种缓存技术中,客户浏览器直接使用了本地缓存中的内容进行显示,未和Web服务器进行通信,因此降低了服务器的负载,间接提高了服务器的并发访问量,同时也降低了网络通信量以及服务器访问的任何后台资源,从而优化了各种Web应用的响应时间。

3.1.2 基于代理服务器的缓存技术

建立一个缓存代理可以使分布的用户访问网络时都经过这个代理,该代理服务器处于客户浏览器和Web服务器的中间。这样能加快使用该代理的用户网络的反应速度。当一个用户访问一个文档时,首先访问该代理服务器,由于该文档在早些时候可能被另一个同局域网的用户访问过而在缓存中,对这个用户来说,文档就可以直接从代理服务器的缓存中获得,而不必到原始的web服务器中获得了。所以,如果用户的web浏览器配置Proxy代理,这样用户对所有Web应用系统的请求都经过代理去访问Internet。在用户请求访问Internet之前,代理服务器首先检查自身是否己经缓存了用户请求访问的Web对象,如果己经缓存并且没有过期,那么就用本地缓存的Web对象响应用户的请求,从而加快了用户的访问时间,并节省了带宽资源。此种类型称Forward-Proxy正向代理。不使用代理服务器的访问流程如图2所示;使用代理服务器的访问流程如图3所示。

使用代理端缓存技术具有以下的优点:(1)减少网络信息流量;(2)减少用户访问延迟;(3)减轻服务器的负载;(4)提高了web应用系统的健壮性。

3.1.3 服务器端的缓存技术

当用户访问Web服务器读取HTML页面时,一般Web服务器需要从硬盘上读取HTML文件,然后传输给用户。每次用户访问,Web服务器都重复相同的处理过程。服务器端缓存的目的是降低服务器对用户请求的反应时间、增加服务器的吞吐量。静态内容缓存则将用户经常访问的HTML页面或者Web处理结果存储在服务器的内存当中,在用户请求某一服务时,服务器首先从内存中检索是否有相同的结果,如果存在,则不必重新处理,而直接将结果发送给用户。由于内存的存取速度远远比硬盘的存取速度快,所以Web应用服务器系统的响应时间可以缩短。服务器端的缓存可以处理大部分的用户静态请求,于是大大加快了用户请求的响应时间,并降低了原始Web应用系统服务器的负载。静态内容缓存设备放在Web服务器前面,用于处理用户对静态内容的请求,因此提高了前端Web服务器处理用户连接的能力,这个办法在静态Web应用系统请求占很大比例的环境中是非常有效的。

3.2 动态Web应用中的缓存技术

动态Web应用中页面的编译和解释执行均是在服务器端解析和执行的。因此对于动态Web应用页面的缓存技术主要体现在服务器端缓存技术上,服务器端缓存的目的是缩短服务器对用户请求的响应时间、增加服务器的吞吐量。其缓存方式一般有两种。

3.2.1 数据库连接缓存

用户通过Web应用服务器访问数据库时,Web服务器上的应用程序和数据库服务器之间需要首先建立数据库连接,然后才能存取数据,在处理结束后,这种连接被关闭。每次用户访问都需要重复这样的步骤。由于数据库连接过程是一个严重消耗系统资源的过程,而且时间开销也比较大,因此通常情况下,数据库连接过程对系统响应时间的影响是巨大的。数据库连接缓存是指在Web服务器和数据库服务器之间建立数据库连接池,在系统初始化时即生成一些数据库连接存放在数据库连接池中。数据库连接池的实质是在内存中开辟一个数组,数组的元素即是数据库连接。当用户需要访问数据库时,直接从数据库连接池中取得一个已经存在的数据库连接,操作结束后,连接仍然保持而不关闭,直接返还给数据库连接池。在此过程中,由于数据库连接是事先生成的,因此在一次业务逻辑操作中,生成和关闭数据库的时间减少到O,这样一来,用户访问数据库的步骤被简化,进而优化动态Web应用系统的效率。

3.2.2 内容缓存

内容缓存则将用户经常访问的动态页面的响应内容或者动态页面处理过程中的中间结果存储在服务器的内存当中,在用户请求某一服务时,服务器首先从内存中检索是否有相同请求的处理结果,如果存在,则不必重新计算和处理,而直接将结果响应给用户或者把中间结果从缓存中取出进行一系列计算后对用户做出响应。由于对用户的输出是把内存中的响应内容对用户输出或者是根据缓存中的“半成品”内容进行计算后的输出,在此过程中省略了执行动态页面的业务逻辑的步骤以及对数据库查询、对其他信息系统访问的过程,所以Web应用服务器系统的响应时间可以大大缩短。内容缓存的内容通常是对数据库查询后,数据库返回给Web应用服务器的结果集。对动态页面进行缓存的关键是尽量减少动态页面中业务逻辑的执行次数。对动态Web应用页面的高速缓存一般采取3种缓存实现方案:(1)动态页面变静态页面技术;(2)利用开源的缓存API缓存请求处理过程中的中间对象;(3)缓存一个对象的方法的执行结果。

4 结束语

缓存技术不是着眼于网络设备性能的提高和扩容,而是在更深一个层次上分析用户数据流的统计特征,利用数据的可复用性和共享性,在边缘网络复制和保存网络数据的一项重要技术。它不但可以减少网络和服务器负载,提高数据访问速率和服务可靠性,而且大大节省了网络运营费用,同时提高Web应用系统的响应速度,增强用户感受和认可,进一步优化Web应用系统的性能。因此缓存技术有着非常广阔的发展前景,相信随着各种Web应用的不断深入,缓存技术会发挥越来越重要的作用。

参考文献

[1]赵玉伟.WWW中缓存机制的应用研究[D].保存地点:武汉理工大学,2006.5,14-23.

[2]贺琛,陈肇雄,黄河燕.Web缓存技术综述[J].小型微型计算机系统,2004,25(5),836-842.

[3]乐德广,郭东辉,吴伯僖.网络缓存技术及应用的研究[J].应用技术,2003.5,33-35.

Web性能优化 篇7

互联网改变着人们的工作、生活和学习, 人们可以在互联网上建立一个虚拟的电子世界。借助互联网, 通过动态的交互式信息发布, 如网上购物、网上银行、网上书店等一系列在线电子商务服务系统越来越盛行。随着基于Web的各种B/S模式网络应用深入到人们的工作和生活, 获取信息已不是问题, 人们开始关注网络体验即网络响应用户访问的速度, 因此服务器端软件的性能成为衡量Web应用成功与否的主要因素。

基于程序执行状态和执行轨迹分析、内存使用问题分析、日志挖掘分析、海量日志分析等是目前常见的Web服务器性能分析方法, 但这些方法只对Web的性能分析与诊断提供了很少的一部分支持, 效果不是很好, 分析结果也无法重用。Web服务器端软件的性能分析和诊断应直接针对于性能缺陷的诊断和定位, 判断出性能缺陷发生的原因, 从而确定性能缺陷的影响因素, 再进一步挖掘和分析这些影响因素, 形成科学有效的诊断方法和改进方案, 提高Web服务器端的响应速度。

2 相关概念

2.1 软件性能

软件性能指一个软件系统正确提供其服务的能力和效率, 是软件对用户请求响应速度在响应时间、吞吐量、资源利用率和可用性等方面的度量。

2.2 Web应用性能

Web应用性能是指Web所能提供给用户的服务能力和服务效率, 是Web在网络运行环境下, 能够迅速正确的响应用户请求, 并且响应的速度和准确率不会随着运行时间的增加或用户数量的增长而受影响。单个用户的请求, 一般用响应时间来度量;多用户并发请求时, 则用吞吐量来度量Web的性能。

2.3 Web应用响应时间

客户端向服务器发出一个请求后, 服务器接收到请求并响应请求所经历的时间延迟称为Web响应时间, 响应时间单位为秒或毫秒。

3 Web应用性能优化方法

3.1 Java虚拟机性能优化

Tomcat是运行在Java虚拟机上的Web服务器, 用户可以根据自己的需要选择不同的操作系统, 可以为Java虚拟机设置合适的使用内存, 提高虚拟机的运行效率, 也可以在运行中通过命令方式改变虚拟机所使用的内存大小。

虚拟机的垃圾回收时间和频率受虚拟机的可用内存规模制约, 垃圾回收所能接受的速度与具体应用有关, 如果堆过大, 完全垃圾收集就会很慢, 频度会降低。堆过小, 完全收集快, 垃圾回收也会频繁。调整堆的大小, 最小化垃圾收集时间, 可以在特定的时间内最大化实际处理的客户请求数。

3.2 负载均衡

使多台服务器为对称方式, 各个服务器地位同等, 每台服务器都能够独立地对外提供服务而不需要其他服务器的辅助。通过负载分担技术, 当外部发送来请求时, 按一定的规则分配到对称结构中的某一台服务器, 接收到客户请求的服务器单独回应请求。

所有提供服务的服务器组成了一个应用服务器集群, 它们对外提供一个统一的地址, 当该集群接收到一个服务请求时, 根据一定的规则选择其中一台服务器, 并将服务定向转给该服务器, 这样便实现了负载均衡分担。

应用负载均衡技术可以使用多台应用服务器同时为大量的用户服务, 服务器不单单只能为有限的用户提供服务, 即使某台服务器出现故障, 响应服务也不会受影响, 负载均衡服务器能够自动检测并停止该服务器的服务, 同时将服务请求转发至其他正常的服务器, 这样确保了服务的可靠性, 保证客户端的请求及时得到响应。

3.3 SQL Server性能优化

3.3.1 找出性能瓶颈的根源

如果存在资源瓶颈, 需要找出产生瓶颈的原因。

3.3.2 减少锁的使用

过多的锁可以导致性能严重下降, 有时还会出现死锁, 因此说锁的使用是服务器端性能的一个重要因素。在多个用户的数据库应用程序中都有锁的存在, 过多的锁导致的瓶颈, 首先要评估牵引编制策略;其次使用SET DEADLOCK_PRIORITY命令设置一个事务或一组事务总是低或高优先级;最后, 可变更给定连接的默认锁定行为, 具体措施为:使用SET TRANSACTION ISOLATION LEVEL命令或NOLOCK查询提示修改查询行为。

3.3.3 合理使用索引

在数据库中合理的使用索引可以提高查询速度, 索引是数据库中很重要的数据结构, 使用索引应遵循以下原则:第一, 经常链接但没指定为外关键字的字段上建索引;第二, 在排序频繁或分组的字段上建索引;第三, 在常用的条件或逻辑判断中, 条件表达式中经常用到的不同值较多的字段上建索引。一定要科学的使用索引, 否则不但不能提高查询速度, 反而会降低或严重影响查询效率或更新速度。

4 Web应用性能分析

4.1 基于程序执行状态和执行轨迹的性能分析

PVM、XPVM、Paradyn都是Web性能监测分析工具, 通过在程序运行中自动插入和修改命令, 可以对大规模并行程序的性能进行分析, 系统地探测造成性能缺陷的原因。

4.2 基于内存使用问题的性能分析

目前.net被应用于服务器, 内存是导致Web应用出现性能缺陷的主要原因, 使得内存使用效率分析和诊断成为必要。

判断系统有无遇到瓶颈、是否需要通过增加内存提高系统能是内存分析的两个主要方法, 主要计数器包括Memory和Physical Disk类别的计数器。

4.3 基于Web日志挖掘的性能分析

数据挖掘即从量的数据中提取隐含的、先前未知的、有潜在应用价值的模式、规则和知识, 包括关联分析、分类分析、聚类分析、特征分析、模式序列分析、偏差分析和趋势分析等。

Web服务器保存了每一次被访问的所有相关日志信息:客户端请求的URL、发出请求的IP地址、参考页面等。Web挖掘是数据挖掘在Web上的应用, 从与Web相关的资源和用户行为中抽取有用的模式及隐含的信息, 其目标是从Web的超链接结构、网页内容和使用日志中探寻有用的信息, 通过挖掘相应站点的Web日志文件和相关数据发现用户访问的模式, 分析和探索Web日志记录中各种数据的规律, 发现性能缺陷中涉及的各个性能指标及变化趋势, 从而根据挖掘信息改进Web服务系统的性能, 提高Web应用服务的质量。Web日志挖掘流程如图1所示:

5 Web应用性能评价

5.1 测量方法

通过一定的测量设备或一定的测量程序直接从计算机系统测得各项性能指标或与之密切相关的度量指标, 然后经过一些简单的运算求出相应的性能指标。

在并行运行的系统中, 可以使用测量方法。

5.2 模型方法

首先对要评价的系统建立一个适当的模型, 然后求出模型的性能指标, 以便对系统进行性能评价。模型中一般包括许多参数, 这些参数的确定往往依赖于实际系统的测量结果或对系统参数的估计。

模型方法的优点在于, 它可以应用于已有的系统的性能评价, 也可应用于尚不存大的系统的性能评测。模型方法的工作量也比较小, 费用少。

6 Web应用性能的改进

6.1 优化服务器配置

运用更快速的磁盘和更优化的网络存取机制, 能够改进网站的访问速度。可以运用特定网卡来改进服务器的速度, 或是采用相关技术优化网络接口卡的性能。该方案的核心是减轻Web服务器的中央处理器的负荷, 使CPU从烦琐的网络协议处理中解脱出来, 集中于页面处理和服务提供。

6.2 运用缓冲机制

优化网络可升缩性和性能的另一方法是在服务器外围增加缓冲机制, 为Web服务器增加反向缓冲处理, 使服务器能够顺利实现已创建页面的传输, 同时在创建动态页面过程中减轻服务器负荷。

6.3 以用户为中心

网络要解决的最重要课题就是通信传输, 一个网站是否能够贴近用户, 主要在于其通信传输方案。可以在访问区间设置多个服务器, 同时运用全局负载均衡设备, 使用户能够访问到就近站点。另外, 也可以运用CDN, 将用户访问的大量动态对象、图像和PDF文件放置在靠近用户的缓冲器中, 让用户能够就近访问网站的内容。

6.4 减少数据量

压缩传输数据, 提高访问速度。

摘要:互联网改变着人们的工作、生活和学习, 随着基于Web的各种B/S模式网络应用深入到人们的工作和生活, 人们开始关注网络体验即网络响应用户访问的速度, 因此服务器端软件的性能成为衡量Web应用成功与否的主要因素。Web服务器端软件的性能优化和分析是改善软件性能、提高软件质量的一个重要环节, 本文从性能瓶颈的识别方法、性能分析方法和性能改进方法等方面详细介绍了相关的方法。

Web性能优化 篇8

1 WEB服务器类型、作用

1.1 WEB服务器类型

计算机软硬件技术发展至今,人们对服务器的使用要求也再不断的变化,为了适应不同需求、不同环境,其分类标准也多种多样。主要有如表1所示的几种分类方法。

1.2 WEB服务器在网络系统中的主要作用

Web服务器主要提供基于HTTP协议的信息服务,可实现信息发布、资料查询、数据处理等应用,其主要功能是提供网上信息浏览服务[1]。Web服务器除了能够运行用户通过Web浏览器提供的信息的脚本和程序外,主要的作用是信息存储的介质。虽然Web服务器不支持事务处理或数据库连接,但它可以配置各种策略来实现容错性和可扩展性,例如负载平衡、缓冲、集群特征等。

2 影响WEB服务器性能的主要因素

2.1 WEB服务器性能的测试

Web服务器的性能是指一个Web服务器响应用户请求的能力。评价Web服务器的性能指标主要有:并发用户数、每秒用户数、并发连接数、连接速率、事务处理次数和速率、服务器响应时间、页面响应时间、往返时间、系统带宽等[2]。

影响Web服务器性能的因素很多,首先用户的行为对Web服务器实际性能影响非常大。例如,浏览器类型、SSL应用、在线操作、思考时间、超时放弃浏览等。另外,网络系统的基本性能也会对Web服务器的性能产生较大影响,例如,网络链路传输速率、丢包率、传输时延等。

因此,对用户访问特征和网络系统对Web服务器及其负载的影响的深入研究和分析,可以帮助测试人员设计出更合理的Web负载模式,来进行Web服务器的性能测试。

2.2 我校校园网的现状

我校校园网设有四台服务器,其中包括1个网管工作站、3台Web服务器,Web服务器均为Compaq Proliant 8000。1台Web服务器提供域名服务(DNS)、文件传输服务和Email收发等服务,1台Web服务器提供WWW和数据库存取,用于校园网主页和图书馆书目管理等信息服务,另1台主要用于网络教学和远程教育服务。服务器运行Microsoft NT Server 4.0网络版操作系统。网络主干采用Intel Express 10/100 Fast Ethernet Switch以太网交换器。每个交换器有8个自动识别速率的10Base-T/100BASE-TX双绞线端口,每个端口支持1个以太网段(10Mbps)或1个快速以太网段(100Mbps)。100BASE-FX光纤模块提供了62.5/125多模光纤的SC连接器,当它与其它交换器互连时,支持2KM的连接距离,适合于校园网上建筑物之间的互连。其网络结构图如图1所示。

网络服务器的选择原则为:必须具有较强的网络互联能力和数据处理能力;有很高的安全性和可靠性;容易进行软硬件的管理和维护;具备可扩展性和易升级能力。选用Compaq Proliant 8000作为网络服务器,由于其具有以下特点:CPU容易升级到双处理器或4处理器;集成了21个Wide Ultra 2双通道集成式阵列控制器,数据传输速率较高;配置了高可用性的热插拔硬盘和冗余网卡;能使用Compaq Insight Manager进行统一管理。这些优势,使其能够很好的满足校园网的需求。

但是,近几年随着我校办学规模的逐渐扩大,已有的设备已经不能适应当前的实际需要。因此,改善网络基本设施,优化网络结构,提高服务器性能,是网络中心的当务之急。

3 WEB服务器的性能测评方法和测评工具

3.1 WEB服务器性能测评方法

通常情况下,有两种评价服务器性能的方法:(1)模型方法,首先对要评价的服务器系统建立一个模型,然后求出模型的性能指标,再根据求得的性能指标对系统性能进行评价。(2)测量方法,首先通过一些测量设备或测量程序直接测试服务器的各项性能指标,然后对测得的各项指标进行一些运算和处理,求出相应的性能指标,再根据求得的性能指标对系统性能进行评价。两种测量方法相比,模型方法工作量较小,费用较小,并且适用范围较广,不仅可以对已有的系统进行性能评价,而且也可以对尚未存在系统进行性能预测[3]。

3.2 WEB服务器性能测评工具

Web服务器性能测评工具典型的主要有:SPECWeb2005、Httperf、WebBench、Webstone、WebPerf等[4]。

SPECWeb2005主要用来测试Web服务器SSL/non、SSL请求/响应的性能,在相同的时间里,服务器回答的请求越多,就表明服务器对客户端的处理能力越强,系统的Web性能就越好;Httperf主要用来测试服务器的响应时间和吞吐量;WebBench主要测试Web服务器每秒钟响应请求数和每秒钟传输数据量,它提供电子商务测试和动态测试两种测试模式,使用客户端向服务器发送静态或动态文件的请求,并记录下服务器的每秒请求数和吞吐量;WebStone主要测试Web服务器的响应时间、连接时间、数据的吞吐量和文件的传输率;WebPerf主要测量IP网络中事务的应答延迟时间。

4 校园网WEB服务器的测试及优化

4.1 测试网络环境的选择

由于新校区的建成和投入使用,Web服务器的响应时间和吞吐量明显降低,为了及时解决当前这种现状,主要测试了服务器的响应时间和吞吐量。

采用如图2所示的测试环境,服务器和客户端之间通过路由器连接,它们分别处于两个不同的子网中。客户端主机共有四台,其中一台为客户端控制机,四台客户端主机均连接在百兆交换机上,该交换机通过一条千兆上行链路接到路由器上。

测试1台Compaq Proliant 8000 Web服务器,两台主从负载均衡器均连在网络中,测试的软硬件环境如表2所示。

4.2 两种测试工具的使用及结果分析

1)WebStone测试

为了测试服务器的响应时间、吞吐量等,模拟不同数量的客户来对测试环境发出请求。测试时采用的测试集文件情况为:0kb~1kb,分布35%,大小500b;1kb~10kb,分布50%,大小5kb;10kb~100kb,分布14%,大小50kb;100kb以上,分布1%,大小500Kb;用户数量在100~850之间,步长为50,每次测试时间为5分钟,并且循环3次,最后取3次测试的平均值作为结果,得出的结论是响应时间基本上是随着用户数量呈线性增长,集群每秒能够接收的请求数趋于稳定,系统的吞吐量也比较稳定,维持在80Mbits/s上下。

2)Httperf测试

采用不同的速率对服务器上的某一文件发出请求,测试服务器的吞吐量和响应时间[5]。使用Autobench进行分布式测试。首先运行客户端主机上的Autobenchd服务,然后通过运行控制端的Autobench-admin和3个客户端主机的Autobenchd进行通信,并控制各主机上的httperf,最后由控制端Autobench-admin收集3台客户端主机的测试结果并保存在文件中。得出的结论为,请求速率与响应时间呈线性增加。而吞吐量以连接速率230个/秒为拐点,前面几乎呈线性增加,其后呈下降趋势。

综合考虑以上两个测试结果,其吞吐量均接近于100M/s。得出的结论是在测试环境中路由器等外设成为了影响系统性能的瓶颈。为了验证这种结论,又将主机直接连接至千兆交换机上,对服务器再次进行测试,结果不论是响应时间,还是吞吐量,服务器的性能表现几乎均是原来的10倍。

4.3 校园网中WEB服务器的优化方法

根据上面的测试分析和我校校园网的现状,主要做了这些优化工作:(1)系统层面的优化,主要采用调整网络结构,使用多路由,在局域网之间增加边界路由,加强网络安全等措施。(2)服务层面的优化,主要采用Web Q0S协议,在主机与交换机之间配置组播协议,利用XML实现不同应用程序之间的数据管理,负载均衡和虚拟主机等手段。(3)用户层面的优化,主要采用瘦客户管理,用户访问控制和用户综合管理等方法。

从具体的实施情况看,校园网性能有较大的改善。但是网络优化涉及面很广,还有许多没有涉及到的问题,需要进一步研究和分析。

5 结论

通过对Web服务器性能的研究和测评,笔者认为,影响Web服务器性能的因素很多,测评时需要注意这几点问题:负载的选择;在最短的时间内如何测得当前系统的最优性能;找出问题的瓶颈并解决它;如何配置服务器的网络硬件环境才能达到最优性价比;如何将单机Web服务器的性能优化扩展至机群等。在正确测试的基础上,找出影响Web服务器优化的瓶颈问题,然后根据实际情况选择易于实现并能明显改善其性能的因素加以改进,达到提高服务器性能的目的。

摘要:随着互联网技术的快速发展,在当代Web作为信息传输媒介的主要手段,其性能的好坏标志着一个网络的运营状况。而作为Web系统重要组成部分的Web服务器直接影响着Web系统的性能,因此Web服务器性能的优劣已成为人们关注的焦点。本文主要研究了在本校现有网络条件、服务器配置的情况下,如何利用服务器软件和负载等方法来提高Web服务器性能,对提高整个校园网络的性能起到一定的积极作用。

关键词:校园网,Web服务器,性能评价,性能优化

参考文献

[1]林闯.计算机网络和计算机系统的性能评价[M].北京:清华大学出版社,2001.

[2]鲍剑洋,沈群.WEB服务器性能优化[J].计算机工程与应用,1999,6:81-85.

[3]席静,褚兴军,徐志伟.一种提高Web服务器性能的方法[J].计算机研究与发展,2002,39(4):415-421.

[4]周万江,晏蒲柳.WEB服务器性能评测软件的原理及发展[J].计算机应用研究,2003,(8):93-95.

[5]欧灿辉,李晓明.WEB服务器性能评测[J].计算机研究与发展,2002,39(5):540,547.

Web性能优化 篇9

关键词:性能优化,SQL解析,异步请求,Struts标签,缓存

0 引 言

福建省全员绩效管理系统是基于福州电业局绩效管理模式开发的。根据系统在福州局的成功运行情况,福建省电力有限公司拟在全省29个直管单位、55个县级单位范围内推广全员绩效管理系统。系统采用Struts 2.0+Spring+Ibatis框架和Oracle技术,以B/S模式实现。为满足当前国家电网“三集五大”的管理模式,系统采取集中式部署方案,即在省公司设置统一的应用服务器、数据库服务器,基层各单位登录省公司服务器开展本单位的绩效管理工作。

为了保证系统的正常运行,省公司为系统配置的软硬件环境如下:应用服务器采用BEA WebLogic;数据库采用Oracle 9i;应用服务器、数据库服务器的硬件配置为CPU:Inter Xeon E5540 8核,主频:2.53GHz,内存:16G。

系统上线后,厦门电业局作为首批使用单位第一家上线,系统运行正常。但随着六、七家直管单位的同时上线,系统数据量和访问量快速增长,整个系统的响应逐渐变慢。特别是每月25日左右,由于系统要进行大量的计算,计算工分、计算绩效得分、计算绩效奖金,计算公式又是根据各单位的管理要求自定义配置,更加重了系统的运行负担。系统响应缓慢,某些页面浏览响应时间超过了一分钟以上,有时候甚至给人以死机的感觉。

由于当前系统的服务器配置已相当高,单纯靠添加硬件来提高性能已很难获得好效果。我们首先采取基础优化方法,即调整应用服务器及数据库参数。一般地说,适当地调整这些选项无疑也能够提高系统性能,但对于本系统来说收效甚微。系统的稳定性、性能压力问题成为大家最为关注的问题。

1 分析过程

根据系统运行情况,我们认为性能优化的目标就是要提高系统并发用户数量、吞吐量、可靠性这三个指标。换句话说,我们希望让系统更快地为更多的用户提供服务,且保证服务过程不会中断。目标很明确,但应当从哪里入手改善系统性能呢?每一个不同的应用,响应用户请求的服务步骤不同,与后端资源的交互方式不同,业务需求也不同,我们必须针对应用的具体情况制定相应的优化策略。

首先,深入理解业务需求,定义一组精确反映最终用户操作方式的典型事务。这是优化性能过程中最为重要的一步。通过对绩效系统的深入分析,我们确定了访问量、并发量最大的一组操作:系统登录——我的合约——新增合约——保存——提交作为典型事务。

其次,用典型事务对应用进行负载测试。我们选择Mercury Interactive公司的LoadRunner 9.5作为负载测试工具,来模拟实际运行环境中用户的操作方式,进行负载压力测试。在服务器承载不同的并发用户压力下,采集测试结果。观察系统的响应速度和性能,找出被测系统存在的性能瓶颈等问题。

第三,分析性能数据,进行性能调优。根据负载测试获取到的性能数据,结果分析如下:

(1) 并发用户达到100时,登录响应时间高达22.28秒,观察各项系统资源得知均未得到充分利用。

(2) 对比“登录”和“登录页”两个事务发现:访问登录页在300用户并发情况下,访问响应时间为4.781秒,而网络资源迅速达到瓶颈状态,表明“登录页”存在性能提升可能。而登录操作在300用户并发情况下,响应时间高达29.25秒,系统资源却未充分利用,登录操作的能力达到瓶颈。“登录页”的目标为静态页,无需后台业务操作和数据库操作,而“登录”则都需要。这个差别可以看出,登录操作在高并发情况下,业务处理缓慢。

(3) 从“新增合约”平均耗时分解图上,可以看到接收应用服务数据耗时(Receive)占用了大量的时间,导致整个“新增合约”操作平均耗时居高不下。从而降低整个业务功能的业务处理能力。前期并发用户少,“新增合约”的处理速度也正常,随着虚拟并发用户的增加,系统请求响应缓慢,估计系统内部通信拥塞。我们推测,可能是应用程序的后台业务尤其是数据库数据获取处理及传输处理方式不当,导致用户稍多并发时,系统响应速度缓慢。

通过上述分析,我们认为必须优化后台数据库处理和操作,提升页面展示速度,以最终提高系统性能。

在绩效管理系统中,我们采取各种手段,利用LoadRunner 9.5测试工具进行负载压力测试、利用Tomcat 自带的status功能监控线程及JVM使用情况、利用外接控件Jwebap监控各方法调用记录及频率等等,分析数据,寻找系统的性能瓶颈,最终引入了SQL优化、缓存、AJAX等技术措施,通过反复地测试、分析、优化、调整,充分利用系统资源,减轻了数据库服务器压力,提高了系统响应能力,达到了优化目标。

2 优化方法

通过分析研究,我们优化了绩效管理系统,在其中应用了四大技术:一是进行SQL优化,提高SQL语句执行效率,降低数据库查询响应时间;二是利用AJAX技术,提升用户使用体验,提高系统高并发的承受性;三是合理使用Struts标签,提升页面速度;四是利用缓存技术,减少与数据库的交互,从而降低系统消耗。

2.1 SQL优化,提高语句执行效率

SQL语句的执行效率最终决定了Oracle 数据库的性能。所以要解决数据库性能瓶颈,首要的手段就是进行SQL优化。

要提高SQL语句的执行效率,深入理解游标的生命周期,特别是SQL语句的解析过程是必需的。SQL语句被解析的时候,数据库引擎首先对SQL语句进行语法、语义以及访问权限检查。即数据库引擎需确认SQL语句是否被正确书写、SQL语句引用的对象是否都存在、确认解析它的这个用户是否有必要的权限来访问。接着,数据库引擎判断是否存在可共享的父游标。若不存在共享的父游标,就会在库缓存中分配一些内存,并将新产生的父游标保存进去。若有共享的父游标,则继续判断是否存在可共享的子游标。共享的子游标存在,则解析结束,否则转入逻辑优化阶段。在逻辑优化阶段,数据库引擎通过应用不同的转换技巧,生成语义上等同的新的SQL语句。在物理优化阶段,首先,会生成与每个逻辑优化产生的SQL语句有关的执行计划;再次,根据数据字典找到的统计信息或者动态取样收集的统计信息,计算出与各个执行计划相关的开销;最后,拥有最低开销的执行计划会被选中。简单地讲就是,查询优化器通过搜索空间来寻找最有效的执行计划。最后一步是将子游标保存到库缓存中,数据库引擎首先分配内存,然后将共享子游标存储进去,最后将它与父游标进行关联。图1是SQL语句的解析过程示意。

深入理解上面的解析过程,我们可以相应地采取一些SQL优化的技巧。在绩效系统中,主要通过改变访问结构、使用绑定变量和存储过程、修改SQL语句等措施,达到SQL优化的目的。

2.1.1 改变访问结构

对于绩效管理系统这样的交互式应用,我们希望Oracle查询优化器能以最快响应速度为优化目标。为此,我们分析每条执行速度慢的SQL语句,认为主要是由于数据量较大,且表和表之间的关系复杂,而在一定程度上造成了SQL语句执行的缓慢。采取的具体措施如下:

首先,避免对大表进行不必要的全表扫描。所谓全表扫描,就是在访问表时,从磁盘上存储该表的起始位置开始逐条读取数据,直到该表的结束位置。在大表的常用且值重复几率小的字段上创建索引,通过索引访问获得记录,将大大降低物理磁盘读写次数,从而降低整个查询响应时间。因为创建合适的索引会影响SQL优化器对执行计划的选择。数据量的大小以及数据分布情况都会影响执行计划。

其次,尽可能减少同时对几个大表的全表扫描。若确实需要同时多表扫描,应先在这些表的合适字段建立索引,在表关联时尽量用这些索引的字段进行关联。例如下面的SQL语句一:

SELECT T.ID,T.DEPTID,TT.WORKSORT,TT.WORKCONTENT, T.DEGREE,T.REMARK,T.JOBTESSERA,T.PLANSCALE FROM EPAS_WORKENTER T,EPAS_WORKBASE TT,EPAS_ORGMANAGE A

WHERE T.DEPTID=A.ID AND T.WORKID=TT.ID(+) ORDER BY T.OPERATESTARTTIME DESC ,T.ID

当时,表epas_workenter共有75410条数据,epas_workbase共有147300条数据。在以上这样数据量的情况下,语句的执行时间在25s~35s 之间。我们在这两个表之间增加关联索引: epas_workbase.id 、epas_workenter.Workpointid 两个字段,以上语句的执行时间缩小至2s~3s 之间。

对于SQL语句优化不能达到目标的,我们尝试更改数据产生方式。对于SQL语句一,我们试着打破与大数据表epas_workbase之间的关联,将表epas_workbase中的worksort、workcontent的值在创建epas_workenter表记录的时候就同步添加到其中,SQL语句一改变为:

SELECT T.ID,T.DEPTID,T.WORKSORT,T.WORKCONTENT, T.DEGREE,T.REMARK,T.JOBTESSERA,T.PLANSCALE FROM EPAS_WORKENTER T,EPAS_ORGMANAGE A WHERE T.DEPTID=A.ID ORDER BY T.OPERATESTARTTIME DESC ,T.ID

该语句的执行时间缩小至1s 以下。这种更改数据产生方式的方法,实质上减少了同时进行全表扫描的表数。

最后,在使用索引字段时应尽量不要对该字段使用函数,因为使用函数后该字段的索引作用将消失。当然,在写扫描条件时,要把检索速度快的条件写在前面,这样可以先过滤掉一部分记录,再用速度慢的条件检索时,扫描的记录数将减少,可以相应提高扫描速度。

采取以上这几个措施,不仅可以提高SQL语句的响应速度,还能有效降低影响数据库性能的几率。

2.1.2 减少硬解析

对于一个提交的SQL语句,Oracle引擎存在两种可选的解析过程:硬解析、软解析。在前面描述的SQL语句的解析过程中,当共享父游标与子游标都可用,Oracle引擎只需要采取解析的前一个步骤时,对应的解析就被称为软解析。而当所有的操作都需要执行的时候,则被称为硬解析。

从性能的角度看,需要尽可能地减少硬解析、避免硬解析。因为硬解析的开销较高,一是因为逻辑优化和物理优化都非常依赖CPU的操作,二是需要分配内存来将父游标与子游标保存到库缓存中。由于库缓存是在所有的会话之间共享的,库缓存中的内存分配必须串行执行。硬解析需要经解析、制定执行路径、优化访问计划等许多的步骤,而软解析只做软分析即可,效率上有很大的提高。

在绩效系统中,我们首先使用了绑定变量。绑定变量是相对文本变量而讲的。所谓文本变量是指在SQL直接书写查询条件,这样的SQL在不同条件下需要反复解析。绑定变量是指使用变量来代替直接书写条件,改变变量的值来改变SQL语句的执行结果。使用绑定变量,就能使用软解析,重复利用执行计划,减少数据库引擎消耗在SQL语句解析上的资源,减少锁存时间,降低锁存次数。减少访问数据库的次数, 就能实际上减少数据库的工作量。这将提高应用系统性能,并且大大提高可伸缩性。

其次,我们应用存储过程和函数。存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库的库缓存中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。在存储过程创建的时候,数据库已经对其进行了一次语法和语义等解析,并给出了优化执行方案。这种已经编译好的过程可极大地改善SQL语句的性能,其中存储过程中参数的使用实际上就是使用绑定变量。存储过程一旦执行,在内存中就会保留一份这个存储过程,这样下次再执行同样的存储过程时,可以从内存中直接调用,使得存储过程比普通的SQL语句执行更快。而函数和存储过程的执行本质是一样的。

通过绑定变量的使用、存储过程和函数的应用,大大减少了解析时间,提升了运行速度。

2.1.3 修改SQL语句

SQL是一种非常强大且灵活的查询语言,常常可以通过各种不同的方法提交一个完全相同的请求。然而,对Oracle的查询优化器而言,要为所有不同种类的SQL语句都提供高效的执行计划是不可能的。不同写法但等价的SQL语句,通过Oracle数据库引擎的解析,会对应不同的执行计划。在表数据量小的情况下,可能注意不到不同执行计划所导致的性能上的差异。但在大批量的数据下,执行计划上的任何微小差异都有可能导致时间和资源利用发生巨大的改变。

所以只要我们准备对一条SQL语句进行调优,都要先问问自己是否有等价的SQL语句存在。如果有,就要仔细比较它们,从而确定谁能提供最佳的性能。在绩效系统的优化中,修改SQL语句这种方法被我们随时使用,收到了良好的效果。

2.2 融合AJAX技术,提升用户使用体验

AJAX是多种技术的综合,包括JavaScript、XHTML和CSS、DOM、XML和XSTL、XMLHttpRequest。使用XHTML和CSS标准化呈现,使用DOM实现动态显示和交互,使用XML和XSTL进行数据交换与处理,使用XMLHttpRequest 对象进行异步数据读取,使用JavaScript绑定和处理所有数据。AJAX的核心是JavaScript对象XMLHttpRequest,它是一种支持异步请求的技术。

传统的Web应用采用同步交互过程。用户先向HTTP服务器触发一个行为或请求的呼求。服务器接收并执行某些任务,再向发出请求的用户返回一个HTML页面。这是一种不连贯的用户体验,服务器在处理请求的时候,用户多数时间处于等待的状态,屏幕内容也是一片空白。AJAX的工作原理相当于在用户和服务器之间加了一个中间层,使用户操作与服务器响应异步化,不需要打断用户的操作,具有更加迅速的响应能力,而且页面无提交跳转动作,在页面内与服务器通信,提升了用户体验。同时,并不是所有的用户请求都提交给服务器,只有确定需要从服务器读取新数据时才由AJAX引擎代为向服务器提交请求。这种做法一是优化了浏览器和服务器之间的传输,减少了不必要的数据往返,减少了带宽占用;二是AJAX引擎在客户端运行,承担了一部分本来由服务器承担的工作,从而减少了大用户量下的服务器负载。

如在绩效系统中,我们利用AJAX技术修改了系统的登录过程。传统的登录是:点击登录后将所有登录信息封装在对象后再将成功页面返回给用户,其实大量的登录信息并非登录开始所必须的。改用AJAX异步通信机制,首先允许客户端只发送用户名和密码到服务器,无需提交整个页面,从而减少了传输的数据量。其次让服务器先以最少的数据返回到成功页面后,再去逐步加载其他登录信息进对象,同时在界面中提示“数据加载中,请等待!”等信息。这样一来界面更为友好,用户感觉不到等待时间,且能够承受高并发。

2.3 合理使用Struts标签,提升页面速度

为了简化创建用户界面的过程或更容易地在页面上获得动态数据,Struts框架提供了标签集。但是我们通过监控发现,在以第三方框架为基础的系统中,依靠标签的页面在数据量大的情况下将影响页面整体速度,如将数组通过标签输出的功能。

为此,我们搜索类似的标签输出功能,修改为:在进入页面后通过AJAX局部刷新,代替标签s:iterator输出。修改后,页面代码变得极为简单,且加入了友好的提示。

经测试,上述代码的修改,大大提升了页面的速度。故我们建议在频繁调用且数据量大的页面上,要慎用Struts标签。只有合理使用Struts标签,才能更大限度地提升系统性能。

2.4 有效使用缓存技术,减少与数据库的交互

缓存技术被认为是减轻服务器负载、降低网络拥塞的有效途径之一。合理有效地设计和使用缓存是优化应用系统性能的重要手段。绩效系统中,我们利用用户访问的时间局部性原理,对被频繁访问的、短时间内不会发生变化的动态数据存入缓存。程序调用的时候首先检查缓存介质中有无对应的数据,若有,则程序给出的响应将来自于缓存信息;若无,程序转从数据库中获取相应数据。缓存有效减少了与数据库的交互,不再需要为每个请求生成一次页面文件,这对于降低系统性能消耗、提供系统稳定性是非常有益的。

页面缓存可以在客户端、服务器端。在绩效系统中,我们主要采用服务器端缓存,如绩效系统主页。用户登录系统后,最先看到的是绩效系统的主页,主页中的组织绩效、员工绩效的各个考核时间点,都是动态数据,但是短期内不会改变;主页中根据权限显示的菜单,对大部分的普通员工来说,也是短期内不会发生变化的。据此,我们设计了页面缓存,把页面内容缓存在应用服务器上,这样更容易扩展并获得更好的性能。

3 实际效果

以上提及的性能优化方法都已在绩效管理系统中得到应用,并取得了良好的效果。图2和图3是绩效系统部分模块在优化前和优化后的页面性能和事务性能的效果对比(100用户并发,单位:秒)。测试平台是BEA WebLogic Server 9.0。从图中可以看出,上述性能优化方法使系统的性能获得了大大的提高。

4 结 语

上述优化方法的成功应用,使升级完善后的绩效管理系统在性能上有了明显的提升,而且这样的提升具有相对的持久性,且无需大量资金的投入。当然,这也仅仅是针对我们自己开发的绩效管理系统的某些方面提出解决方案,并非一把万能钥匙。性能优化的牵涉面很广,必须充分考虑系统的各个方面和环节,进行详细周全地分析,并在实际系统中不断地改进、完善。

参考文献

[1]林昊.分布式Java应用:基础与实践[M].北京:电子工业出版社,2010:173-214.

[2]Spell B.Java专业编程指南[M].邱仲潘,等译.北京:电子工业出版社,2001.

[3]Antognini C.Oracle性能诊断艺术[M].童家旺,胡怡文,冯大辉,等译.北京:人民邮电出版社,2009.

[4]孔令富,秦宇.基于SQL Server7.0大型数据库应用系统性能优化的研究[J].计算机工程与设计,2001,22(5).

Web性能优化 篇10

由于游戏业务特殊性, 华宇乐悠游游戏平台的负载呈现出以下特点:

1.1 有活动开展时, 活动时间内服务器负载较大。

1.2 没有活动时, 工作日的8小时内人数波动不大, 负载较小。晚间20时至22时是游戏玩家上线高峰, 负载较大。

1.3 国家法定节假日及双休日, 游戏人数比工作日增加较多, 负载较大。

1.4 游戏服务和WEB服务的业务繁忙程度往往存在并发性。

1.5 不排除部分玩家短时间内多次恶意刷新有数据统计的动态页面, 瞬间增加系统负荷。上述这些特点, 会导致系统的负荷极不均衡, 常常表现出系统运行不稳定, 容易死机、死锁, 给玩家的愉快体验带来极大地不方便, 也给公司的经济效益、社会效益带来严重影响。

2 技术方案的设计与实施

2.1 基于ASP.NET的性能优化机制。

要提升ASP.NET应用程序的性能, 最简单、最有效的方式就是使用内建的缓存引擎。然而, 对于第一次来自于客户端的动态页面访问请求, 特别是该页面存在大量需要读取数据库才能显示的内容时, 再强大的缓存机制也无法保证服务器性能在首次访问时有出色的表现。

2.2 Global.asax文件的作用

Global.asax 文件 (也称为 ASP.NET 应用程序文件) 是一个可选的文件, 该文件包含响应 ASP.NET 或 HTTP 模块所引发的应用程序级别和会话级别事件的代码。Global.asax 文件驻留在ASP.NET应用程序的根目录中。运行时, 分析Global.asax 并将其编译到一个动态生成的 .NET Framework 类, 该类是从 HttpAppli-cation基类派生的。}

2.3 利用Timer在ASP.NET中实现计划任务

.NET Framework为我们提供了3种类型的Timer, 分别是:Server Timer (System.Timers.Timer) , Thread Timer (System.Threading.Timer) 和Windows Timer (System.Windows.Forms.Timer) 。其中Windows Timer和Win API中的Timer一样, 是基于消息的, 而且是单线程的。另外两个Timer则不同于Windows Timer, 它们是基于Thread Pool的, 这样最大的好处就是, 产生的时间间隔准确均匀。Server Timer和Thread Timer的区别在于, Server Timer是基于事件的, 而Thread Timer是基于Callback的。相比之下Thread Timer更轻量级一些。目前平台用Thread Timer在ASP.NET中实现计划任务。

2.4 数据自动处理流程。数据自动处理流程图如图2-1所示:

2.4.1 乐悠游后台管理站点为实现计划任务, Global.asax.cs文件部分代码如下:

2.4.2 为了实现多个任务在一定时间间隔内计划进行, Jobs.cs文件代码略。

2.4.3 根目录下的配置文件jobs.config文件部分代码如下:

2.4.4 为了实现单个具体任务按照计划进行, Job.cs文件代码略。

2.4.5 以继承自IJob类的Game In Out StockTotal类为例, 详细到具体任务的执行流程, Game In Out Stock Total.cs文件代码略。

2.4.6 为了准确记录计划任务的执行情况, Simple Logger.cs文件作用是记录自动执行任务的日志, 代码略。

2.5 WEB服务负载均衡系统的设计与实现。

综合以上文件代码, 当系统每天按照计划执行任务后, 当天所有玩家的输赢游戏币就统计出来了, 在任务的最后, 我们还新建立了一个表 (game In Out Stock) , 用来保存统计所得数据。

一般来说, 统计信息的获得应该是实时查询数据库所得, 当涉及到多表关联、跨表查询时, 系统的性能会降低很多。这里我们利用ASP.NET的自动执行任务机制, 在系统负荷最小的时间段 (比如凌晨时间) , 自动执行多表关联查询, 并且建立新表, 把日后将要查询所得的结果提前存入数据库。

这样做的好处主要有两点:一、提升系统性能。当要查询信息时, 直接从已经生成好的数据表中读取信息, 不用涉及关联查询。二、提高数据库系统安全性。如果每次查询信息都要多表联动, 由于涉及到的数据表都是和主要业务息息相关的信息, 同时这些表中的数据实时更新, 对于这种存放重要信息的表来说, 频繁的读写操作无疑给数据库增加很大的负担。如果在系统闲时能把重要信息查询出来并且保存到新表, 则日后查询新表即可完成查询任务。

2.6 负载均衡系统的推广实践

对于管理员后台系统来说, 由于授权进入后台的管理员人数确定, 查询访问量不大, 这样做的优点除了查询时间有效减少之外, 并没有太明显的效果。但是对于公网运行的平台来说, 推广这种负载均衡系统就非常有必要了。

http://www.liaoheonline.com/associator.aspx 为会员中心页, 要正确显示该页左下方的会员等级排行, 通常情况下, 要到db_lobbyv2库的tb_account表中根据a_viptime、a_vipapptime和a_vipexptime三个字段值计算出该玩家当前的会员注册天数, 并根据天数计算出会员等级, 然后返回给动态页面显示出来。对于少量访问该页面的玩家来说, 这些计算量和查询访问量显然不算什么。然而, 一旦遭遇到游戏高峰期, 对于玩家详细信息表这类至关重要的数据库表读写操作频繁时, 将可能造成难以想象的后果。可能带来的灾难是, WEB服务器由于换算时间和计算等级量过大导致宕机、数据库服务器由于众多玩家同时查询访问同一张数据表而死机和网络拥塞等等。为了防止出现以上情况, 我们在后台管理系统中按天统计会员天数和等级, 并且保存至新的数据库表中。这样当用户再访问该页面时, 就不必担心以上不利于公网平台运行的情况发生了。

摘要:负载均衡是把有可能拥塞于一个地方的负载交给多个地方分担, 又称为“负载分担”。本文主要结合ASP.NET提供的自动运行机制介绍一种实现WEB服务负载均衡的有效方法。该项产品方案具有高可靠性、安全性、灵活性、易于扩展、低投入等特点, 已被实践证明是可行的, 其设计思路亦可为其他行业IT解决方案参考。

关键词:性能优化,负载均衡,自动执行

参考文献

上一篇:提高阅读能力四部曲下一篇:挫折教育大家谈