基于性能测试工具A-pache ab实现网格服务的功能测试和压力测试

测量仪表

1473人已加入

描述

1引言

随着Web Services和网格服务的出现,服务器需要支持用户的QoS(Quality of Service)需求和特定用户的SLA(Ser-vice Level Agreement),并且服务器性能的高低直接影响电子商务的开展和用户的满意度。因此,在服务部署之前需要对服务器进行性能测试(压力测试)并根据测试结果确定服务器所能支持的服务质量。

对现有的超文本传输协议(HTTP)的性能测试工具A-pache ab的请求信息初始化、结果分析等进行了扩展,实现了基于服务等级的网格服务的功能测试和压力测试。并对测试结果进行必要的统计分析。还修改了Apache ah中的多请求发送过程,使其请求分布符合泊松分布,更加准确的模拟真实的网络分组到达情况,从而得到更加可信的结果。

2 基于QoS的网格服务质量保证框架

在网格环境中,由于节点的不稳定性(可以随时加入或退出)而导致存在大量暂时性的服务。采取逐个签订SLA的做法,不但会增加运行消耗,也会降低暂时性服务的灵活性。SLA是Web服务质量得以保证的重要协议,它存放了Web服务中的约束信息和管理信息。因此将WSOL(Web Service0ffering Language)中用于描述客户QoS需求的服务等级概念引入到网格服务中,并以服务等级为中心,形成了包括服务等级定义、注册发布、部署以及服务等级监控3部分的服务质量保证框架。该框架的结构如图1所示。

测试

服务提供方根据自己的处理能力确定所能支持的服务等级,并将对应的WSDL(Web Service Deseiption Language)和CGSL(Class of Grid Service Language)文档发送给服务注册中心注册。用户通过查找和选取服务提供方所提供的服务等级来表示对服务质量的需求。网格服务节点根据用户选择的服务等级对用户实行服务区分,采取一定的监控措施监控服务等级的满足情况,并且利用监控结果对网格服务环境实时调整以确保最佳服务状态。

采用WRR(Weighted Round Robin)队列调度算法。保证区分不同服务等级的请求,优先保证高服务等级的服务质量。这种支持网格服务等级的请求调度策略是在HP支持Web QoS的服务器软件体系结构的基础上提出的,以服务等级为划分标准,将不同服务等级的请求分发到具有不同优先级的等待队列中,在部署服务等级时,以保证不同服务等级的服务质量。

目前优秀的HTTP压力测试工具主要有QALoad(Compuware)、LoadRunner(Mercury Interactive)、Web Application StressTool(Microsoft)和Apache ab等。但从扩展难易程度、执行效率、跨平台性以及实际需求几方面综合考虑,最终确定Apache ab为扩展对象。

Apache ab是Apache提供的一种超文本传输协议(HTTP)的性能测试工具。其设计意图是描绘所安装的Apache在多请求环境下的执行性能。在使用Apache ab时,可使用其提供的选项参数满足各种测试的需要。Apache ab的简要流程如图2所示。

测试

3 Apache ab的扩展

通过对源代码的分析及其流程的剖析可得出Apache ab存在一些不足,主要表现在没有完整地实现HTTP/1.x,仅接受某些“预想”的响应格式;请求分布过于简单,仅仅是同时建立多次连接,无法模拟真实的网络请求情况:测试结果只是针对总体测试而言,没有单个请求的测试信息;对命令行参数、服务器的响应头和其他外部输入的解析也很简单,这可能会有不良后果;不支持Web Service,Grid Service。

3.1 修改请求信息

为了支持基于服务等级的网格服务的功能测试和压力测试,把Apache ab中HTTP头的初始化修改成SOAP请求的构造。采用了直接构造SOAP消息并发送的方式来请求服务并获取返回消息,需要对ab进行修改:①SOAP是一个HTTP POST请求,另外Content-Type必须指定为text/xml;charset=utf-8用于指明服务器脚本应该动态生成XML文档以及字符编码应该为UTF一8(否则会出现编码错误);②在HTTP头中增加SOAPAction字段,使服务器能正确的过滤HTTP中SOAP请求消息;③一个SOAP请求的HTTP体是一个XML文档,包含请求服务的参数信息,这个XML就是SOAP信封,所以在构造SOAP请求时,必须在HTTP头初始化完毕后附加SOAP信封。为了让服务器准确的获取SOAP信封,必须在SOAP信封前加上HTTP体的长度(即SOAP信封的长度);④为了支持基于服务等级的网格服务测试,程序中还随机生成了各种服务等级并附加在SOAP请求中,用于模拟请求基于服务等级的网格服务。由于单一的HTTP请求信息是唯一的,所以Apache ab中只对HTTP请求初始化一次即可。这种情况在具有多服务等级的网格服务中是不适用的,所以,对SOAP请求的构造必须在发送前进行多次。

3.2 修改请求发送过程

为了更加准确的模拟真实的网络请求,从而获取更加可信的测试结果,必须修改Apache ab中请求分布,使其更符合真实的网络请求。因为在Apache ab中,多请求的情况是通过与服务器同时建立多次连接来模拟的,这并不符合真实的网络请求状况。

为了模拟网格环境中真实的服务请求,对Apache ab中的请求分布进行修改使其符合泊松分布,通过近似真实的网络请求获取更加准确的测试结果。泊松分布是一种分布规律,在统计中常用于描述时间、平面或空间中“质点”数的随机分布规律,也是目前比较公认的一般网络分组到达的分布。

测试

(1)式中给出了在时间t内到达k个帧的概率Pk(t)的计算方法,其中λ是平均到达间隔的倒数。

实验中,根据公式分别计算k=0,k=1,k=2的概率,然后通过概率的相加获得k≤0,k≤1,k≤2对应的概率,由程序生成一个0~1的随机数与上一步结果比较,从而确定每秒钟请求的个数。连续进行数百秒测试,验证扩展的正确性,可以看出扩展后的Apache ab服务请求分布近似于泊松分布。测试结果统计如图3所示,计算结果如图4所示。

测试

3.3 修改输出结果

实验中,还需要修改Apache ab的输出结果,使其可以打印出单个服务的请求到达时间、完成时间、耗费时间以及服务等级信息。目的在于观察统计单个服务的执行情况以及不同服务等级请求的排队和调度情况。在每次建立连接前获取系统的当前时间即请求到达时间,关闭连接后获取系统的当前时间即完成时间并计算两次时间的间隔即耗费时间,服务等级信息可以从请求服务的SOAP中获取。图5程序输出结果是一个服务的执行信息。

测试

4 服务的压力测试

为了验证扩展后的Apache ab具有支持网格环境下网格服务压力测试功能,并具有一定的统计分析功能,在globus环境下部署了一个Math服务作为测试对象并修改其中的add操作,采用执行过程中空等30 s这种方式模拟服务的执行过程。并且,设置globus的最大服务进程数为4个即如果系统中到达请求数超过4个就要等待(可理解为服务的能力),分别以请求到达数为1个、2个…25个为测试用例描述服务平均响应时间的变化情况。在同一台主机(AMD Sempron2500+,448MB RAM)上同时运行服务和测试程序后,得到如图6所示的结果。目的在于支持多个用户并行访问服务并且系统能很快超载。综上所述,测试目的确定为测试服务的平均响应时间,因为服务是模拟的,其执行过程是空等30 s,CPU利用率、内存占有情况等无法表示节点当前的性能,只有平均响应时间能反映真实的服务情况。

测试

从图6中可知,扩展后的Apache ab完成了对服务的压力测试,与模拟服务器处理能力相吻合,即服务只能同时提供给4个用户,如果用户过多就会造成等待,导致响应时间增加。

5 结语

扩展后的Apache ab可以较好的完成网格环境下基于服务等级的服务功能和压力测试,并具有一定的统计分析功能。如果令请求分布近似于泊松分布,可以模拟真实环境中的请求到达情况,从而得到更加准确详细的测试数据,有利于满足不同需求的测试。

责任编辑:gt

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分