如何提高Web服务器性能
来源:中国电子政务网 更新时间:2012-04-15
                     在各种网站的正常运营中,由于用户需求的多样性,直接导致了主机应用的复杂性,诸如,Client/Server模式、Web/Server模式、三层应用服务系统迅速普及,服务器作为网络信息发布、处理的关键性节点,比以往要承载更多的流量负载。也许服务器的性能表现会不尽如人意,这就需要分析具体的服务器性能瓶颈并找到解决办法。本文对影响Web服务器性能的各方面做了分析,提出了缓解Web服务器性能瓶颈效应的方法。

    各种Web平台技术性能分析

实际上,目前的web站点能够采用各种技术,包括静态HTML、内嵌或服务器解析的HTMLinline/server-parsed HTML)和CGICommon Gateway Interface,公共网关接口),并以ODBCOpen Database Connectivity,开放式数据库互接)实现数据库的互连。每一种数据源均以其独特的方式在web服务中发挥着作用。

静态HTML

静态HTML是互联网上任何站点最基本的一种构成“元素”。几乎所有的站点均不同程度地采用了这种“元素”。静态的HTML页面严格地由标准的HTML标示语言构成,并不需要服务器端即时运算生成。这意味着,对一个静态HTML文档发出访问请求后,服务器端只是简单地将该文档传输到客户端。从服务器运行的那个时间片来看,这个传输过程仅仅占用了很小的CPU资源。为了提高静态HTML的访问效率,主要可以从以下几个方面进行优化:网络带宽、磁盘I/O以及cache(高速缓冲存储器)

服务器解析的HTML

依靠服务器解析的HTML页面包括两部分的代码:一部分是标准的HTML代码,另一部分是服务器端运行的代码(由第三方的处理程序或web服务器自己在页面传输到客户端前对其进行解释)。这种HTML页面是CGI程序的升级版本(因为它的执行效率更高)。目前,内嵌的服务器端扩展集,比如ASPPHP是普通的服务器端支持的扩展集,已得到了非常普遍的使用。开发这种扩展集的目的是要使网站上的内容更生动活泼,更模块化,以利于维护。此外,服务器解析文档改善了性能相对低下的客户端工作模式,将客户端的负载降低到最低程度,同时也降低了数据传输对带宽的要求。因为服务器解析文档必须在其传输到客户端前就通过服务器来进行解释,所以,我们的服务器要添加额外的CPU

  公共网关接口(CGI

CGI使Web站点具有更佳的交互性和实用性。它可以用来收集用户的输入数据,允许运行外部程序以执行众多与用户输入相关的任务以及输出执行结果等,因此,应用CGI后,互联网的用途被大大扩充了。但是,要使用CGI,就必须付出一定开销。特别在CGI与解释器(譬如PERL)配合使用时,CGI的调用成本会很高。如果系统运行在极端繁重的负载条件下,该成本更是高居不下。如果可能的话,应该考虑选用ASPPHP3来取代CGI

数据库的互连性

目前,互联网上最大的资源杀手当非在线数据库(online databases)和电子商务(e-commerce)等应用莫属。提供web功能的数据库和应用服务器近年来飞速增长,显示出强劲的发展势头。从性能的角度来看,在线数据库,基于MySQLOracleSQL ServerSybase等的应用如日中升,迫使我们更加关注服务器的性能状况。对于大型网站来说,高负载的HTTP传输和数据库处理事务互相抢占资源,并最终可能导致服务器在极短的时间内崩溃或者变得慢如蜗牛。在这种情况下,建议使用专门的后台运行的数据库服务器(当然也是出于安全的考虑)以及前台处理的HTTP服务器

如何缓解瓶颈效应

根据上述分析,我们知道不同的平台提供不同的性能水平,各个平台的性能之间存在一定交迭,因此,要根据我们选用的平台,考虑从以下四个方面提出可行的办法。

网络带宽

可用的带宽对于主要由静态页面构成的站点来说,是最关键的因素。撇开网络的吞吐总量以及响应速度不讲,在高负载的环境下,系统的突发传输速率是非常重要的。在用户访问的高峰期,某些站点也许根本无法访问。这样的站点在用户企图访问它时显得慢如蜗牛,而服务器自身却仍旧非常空闲。这样看来,要成功搭建一个

web主机,选择合适的带宽显然是非常重要的。必要时,服务器到核心交换机可选择千兆带宽。

内存

可用的物理内存是另外一个重要因素,这是因为对内存的占用率会直接随着对服务器请求数量的增加而增加。文件缓冲区也是非常重要的,因为它能将磁盘的使用频率降到最低程度,明显加快事务处理的总体速度。对内存的需求很大程度上取决于使用在特定服务器上的软件的具体情况。除了操作系统的管理能力和文件系统的缓冲区大小之外,还需要将所选择的web服务器软件对硬件的特殊要求调查清楚。

存储

web服务器的性能和存储介质有关的读写时间指标也是非常重要的,对大型文件库和数据库(文件缓冲区的作用在这明显削弱)而言,尤其如此。在多设备协同工作的条件下,Web服务器的磁盘系统必须有卓越的性能,推荐采用SCSI硬盘或RAID阵列。对于那些主要放开了“只读”权限的站点(用户不能上传数据),RAID是最佳的解决方案。RAID具有可用性(Availability)、容量(Capacity)及性能(Performance)等三个方面的优点。因为,在RAID阵列中存在多个硬盘磁头,能明显提升读取操作的数据吞吐量。

  中央处理器

对于那些主要由静态页面构成的站点来说,CPU是最次要的一个因素。但是,在使用了包括CGI服务器解析文档或提供web访问方式的数据库的情况下,就需要更多地关注CPU的性能。在这种场合下,如果向一个较小的用户群体提供某种对CPU依赖很大的应用服务,那么,一个高速的单CPU可能是最有用的。但是,如果存在多个用户同时对大批量的页面提出访问请求,那么在这种情况下(尤其在这些页面均以独立的进程或线程模式打开情况下),多CPU系统(即使这些CPU的速度都很慢)更为管用。

  以上简单分析了各类平台下的服务器性能瓶颈,并提出了缓解的基本途径和方法。当然,缓解服务器性能瓶颈的方法还有采用服务器集群、负载平衡技术等。