随着因特网的迅速发展和网络用户的激增,WWW服务的请求数目正在以前所未有的速度增长,这导致了许多热门站点由于负载过重而变得反应迟缓。因此,用户在购买服务器时迫切需要了解服务器的各项Web指标以及服务器在高密度大用户使用情况下的表现;另一方面,服务器厂商在改进其产品或者设计新产品时,也迫切需要评价服务器。
一般来说,性能评价的方法可以分为两类:①测量方法,即通过一定的测量设备或一定的测量程序直接从服务器测得各项性能指标或与之相关的度量,然后由它们经过一些简单的运算求出相应的性能指标;②就是模型方法,这要求首先对要评价的服务器系统建立一个适当的模型,然后求出模型的性能指标,再据此对系统性能评价。
一、用测量的方法来评测Web服务系统
评估Web服务器性能是一个复杂的过程,需要考虑的因素有服务器的硬件配置、操作系统、HTTP软件、网络速度和工作负载等。采用软件测量的方法来评测Web服务器,首先要确定的就是测量指标。测量指标分为黑盒测量指标和白盒测量指标两种。常见的黑盒测量指标有吞吐量、平均响应时间、最大连接数等;而常见的白盒测量指标有线程创建时间、同步化花费、网卡及输入/输出系统的花费等。
1)采用测量方法的评测软件的原理
目前得到广大用户认可的服务器评测软件有SPECWeb99、Webbench4.1和Webstone2.5等。这些软件均采用黑盒测量指标,其原理基本相同——使用一个或多个客户端系统来为服务器产生HTTP负载,各个客户端向服务器发送HTTP请求并且在之后确认响应被接收,最后由主客户端来收集所有客户端的数据并计算出结果。
在这些流行的软件中,SPECWeb99的测量指标是最大并发连接数;SPECWeb96的测量指标是每秒能够响应的最大请求数;Webbench4.1的测量指标是每秒能够响应的HTTP请求数和平均吞吐量;Webstone2.5的测量指标是每次HTTP传输的吞吐量和平均响应时间。
2)评测软件的静态工作负载和动态工作负载
为了能够准确地模拟现实中各个用户对Web服务器的请求,采用测量方法来评测服务器的软件可把测量分为静态和动态两种。
(1)静态工作负载。工作负载的静态部分模拟了一个假定的Web服务提供者。这个Web服务提供者为自己的各个“成员”分配定量的空间,让其存储各自的网页;各个成员在服务器上有自己的网页空间,可以存放大量不同的网页。这些网页表现为访问频率不同的不同大小的文件,根据NCSA,HP,HAL计算机甚至笑话网站上的日志文件,这些文件的大小和访问频率已经被选定。这些文件一般依照大小被划分为不同的级别,然后放在不同的目录下面,各个目录依照Zipf概率分布来加以访问。
(2)动态工作负载。动态工作负载的模型是基于商业网站服务器的两个普遍特征——广告和用户注册。许多Web服务器通过编程来实现网页实时转动,以便广告空间可以卖给几个不同的用户。Web服务器越来越多地采用特殊的浏览器信息来裁减网页、向观众打广告。进行动态测试时,客户端向服务器发出请求(此时服务器并没有客户需要的文件),服务器运行某个特定的程序来产生这些文件并返回客户端。因此动态测试需要消耗CPU资源,所耗费的系统资源也比静态测试多。
鉴于现实中Web服务器的访问特点,在进行测试时,只有将静态和动态测试有机地结合起来,才能更好地模拟Web网站的访问情况,得到有实际意义的结果。
3)评测软件中使用的测试集
测试集的定义是指:给定N个HTTP请求Ri和N个时间值Ti,0≤T1≤…≤Tn,i=1,…,N;E(Ri,Ti)表示事件在距测量开始时刻时间Ti的时候发出请求Ri。一个测试集Ω(N)是指N个元素组成的集合{E(Ri,Ti)|i=1,…,N}。为了公正有效地评价Web服务器,评测软件使用的测试集要求满足两个条件:
(1)能够模拟大量用户的行为;
(2)能够比较容易地获取各种性能评价指标。
因此,可以把构造测试集归结为解决两个问题:第一个是测试集中请求到达时间间隔的分布问题;第二个是测试集中各个请求对应的应答的大小的分布问题。
对Web访问的大量研究表明,到达一个Web服务器的大量请求的时间间隔分布基本上服从负指数分布。因此可以假定请求的时间间隔为参数λ的负指数分布,根据随机过程理论,λ就是单位时间内到达的请求个数的期望值,而τ=1/λ实际上就是这些请求的平均时间间隔。我们称λ为测试集的密度,λ越大,被测试的服务器就越繁忙。
HTTP应答的大小的分布与请求的种类有关,目前的HTTP协议主要包括两种不同的请求:①读取页面空间特定的文件或相关信息;②执行页面空间中指定的Scripts程序。对于第一种请求,我们可以认为应答的大小即指定的页面文件的长度近似地符合负指数分布;对于第二种请求,应答的大小应该包括执行Scripts程序所产生的负载分布和执行Scripts后产生的动态页面的长度分布。执行Scripts程序的过程可以分解成读写文件到内存中和执行K条指令,它们均可以近似地看作负指数分布。而执行Scripts程序后产生的动态页面的长度也可以近似地看作符合负指数分布。
4)其它的一些评测软件
上面提到的SPECWeb99,Webstone等软件虽然可以模拟一定数量的客户端,但是由于在真实的Internet环境中,Web服务器的用户数量是以百万来计的,因此用模拟固定的少量的客户端来评测服务器所得到的结果是不充分的。需要有能够产生并且维持稳定负载的工具,使用这种工具就可以近似模拟无限多的用户。有两种采用这种思想具有代表性的评测软件:Httperf和Webperf。
Httperf和Webperf的设计与SPECWeb等相比,有一个显著的特点——把HTTP的访问部分与请求负载的产生及测量部分完全分离开来。因此,Httperf和Webperf可以用来对不同种类的Web服务器进行测量。
二、建立模型评价Web服务器
采用模型的方法来评价服务器首先对要评价的Web服务器建立一个适当的模型,然后求模型的性能指标,以便对系统性能进行评价。模型中包括许多参数,这些参数的确定一般需要依据测量结果或者对系统参数的估计。
与测量方法相比,模型方法有两个优点:一是它不仅可以应用于已有的系统的性能评价,而且也可以应用于尚未存在系统的性能预测;二是它的工作量一般比测量方法要小,费9輄_用也较小。
1)传统的模型——排队网络模型
把排队网络模型(QNMs)用于一个网络或者系统性能的评价工具已经有很多年的历史了。排队网络可以分为三种基本的类型:开环网络、闭环网络和混合网络,其中开环网络最适合评价一个服务器系统。具有反馈的开环网络如下图所示。
图中λ为外部到达的速率,μ为节点的服务速率,节点间的服务时间分布均为指数分布,到达节点的过程为泊松分布。根据排队网络的Jackson定理,可得到:
使用这种模型时会遇到一个问题:无法考虑嵌套服务要求的网络延时。这会显著地影响模型中服务器与客户端的性能,因此需要在模型中反映这种延时。
2)分层排队网络模型
分层排队网络模型是排队网络模型的一种扩展,能够有效地弥补排队网络模型的不足。在一些分布式应用系统(如CORBA)和Web服务器系统中,一个进程既要经历节点设备的延时又要经历其软件服务的延时。如果不考虑这些软件服务延时的话,这些系统的响应时间和性能预测均会有很大误差,分层排队网络模型正是针对此点而提出来的。
下图是一个Web服务器的分层网络模型。图中客户端对服务器产生工作负载,用来访问服务器的服务;服务器的监听进程负责接收客户端的要求。模型中服务器提供三种服务:Image,HTML和CGI。它们是当前Internet上占据主流的服务,并且三种服务之间区别显著。
Image和HTML请求消耗服务器的处理器和硬盘资源;CGI请求产生另一个进程来执行相应的CGI程序。在这期间,服务器Pool进程必须等待CGI程序完成以便返回结果给客户端。在使用HTTP协议完成请求时,服务器Pool进程必须等待直至最后一个TCP/IP包被确认发送到客户端,这个等待时间包括了相应的CPU占有时间,因此可以很好地估计网络延时。
Web服务器的分层网络模型
本模型所用到的参数有两类:
(1)对于客户端请求来说有:请求到达的速率;访问监听进程的请求的类型的平均百分比。根据对大型网站日志的研究,我们设定Image,HTML和CGI请求所占比例为57%,30%和13%;服务器进程组中的进程号。
(2)对于服务器进程组的各项服务来说有:各项服务的平均CPU耗费时间;各项服务的平均硬盘花费;网络平均延时。
综上所述,为了解决采用少数客户端并不能很好地模拟大规模用户对服务器的访问这一问题,Httperf等软件提出了新的思路。但是,这些基于测量的软件都存在只能测量已存在的系统和费时费钱等缺点,为此人们提出了新的评测方法——模型方法。
本文在传统排队网络模型的基础上,提出了分层排队网络模型,解决了网络延时的估计问题。模型方法一般包括许多参数。这些参数的确定一般需要依据测量结果或者对系统参数的估计,因此把测量方法与模型方法粗暴地区别开来是不科学的。
有机地结合这两种方法,才是Web服务器评测软件今后的发展之路。
网友评论