分级网格服务的APache ab测试分析
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 修改请求发送过程
为了更加准确的模拟真实的网络请求,从而获
- 基于LabVIEW RT的自定义流程测控系统(10-30)
- 基于LabVIEW的语音分析平台的实现(10-30)
- 汽车电子测量系统解决方案综述(11-06)
- 基于示波器卡和LabVIEW的马达编码器测试系统(11-06)
- 基于虚拟仪器的网络虚拟实验室构建(11-06)
- 运用LabView控制DS3900串口通信模块(02-02)