分级网格服务的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)
- 妤傛ḿ楠囩亸鍕暥瀹搞儳鈻肩敮鍫濆悋閹存劕鐓跨拋顓熸殌缁嬪顨滅憗锟�
閸忋劍鏌熸担宥咁劅娑旂姴鐨犳0鎴滅瑩娑撴氨鐓$拠鍡礉閹绘劕宕岄惍鏂垮絺瀹搞儰缍旈懗钘夊閿涘苯濮幃銊ユ彥闁喐鍨氶梹澶歌礋娴兼ḿ顫呴惃鍕殸妫版垵浼愮粙瀣瑎...
- 娑擃厾楠囩亸鍕暥瀹搞儳鈻肩敮鍫濆悋閹存劕鐓跨拋顓熸殌缁嬪顨滅憗锟�
缁箖鈧拷30婢舵岸妫亸鍕暥閸╃顔勭拠鍓р柤閿涘奔绗撶€硅埖宸跨拠鎾呯礉閸斺晛顒熼崨妯烘彥闁喕鎻崚棰佺娑擃亜鎮庨弽鐓庣殸妫版垵浼愮粙瀣瑎閻ㄥ嫯顩﹀Ч锟�...
- Agilent ADS 閺佹瑥顒熼崺纭咁唲鐠囧墽鈻兼總妤勵棅
娑撴挸顔嶉幒鍫n嚦閿涘苯鍙忛棃銏n唹鐟欘枃DS閸氬嫮顫掗崝鐔诲厴閸滃苯浼愮粙瀣安閻㈩煉绱遍崝鈺傚亶閻€劍娓堕惌顓犳畱閺冨爼妫跨€涳缚绱癆DS...
- HFSS鐎涳缚绡勯崺纭咁唲鐠囧墽鈻兼總妤勵棅
鐠у嫭绻佹稉鎾愁啀閹哄牐顕抽敍灞藉弿闂堛垼顔夐幒鍦欶SS閻ㄥ嫬濮涢懗钘夋嫲鎼存梻鏁ら敍灞藉簻閸斺晜鍋嶉崗銊╂桨缁崵绮洪崷鏉款劅娑旂姵甯夐幓顡嶧SS...
- CST瀵邦喗灏濆銉ょ稊鐎广倕鐓跨拋顓熸殌缁嬪顨滅憗锟�
閺夊孩妲戝ú瀣╁瘜鐠佽绱濋崗銊╂桨鐠佸弶宸緾ST閸氬嫰銆嶉崝鐔诲厴閸滃苯浼愮粙瀣安閻㈩煉绱濋崝鈺傚亶韫囶偊鈧喕鍤滅€涳附甯夐幓顡塖T鐠佹崘顓告惔鏃傛暏...
- 鐏忓嫰顣堕崺铏诡攨閸╃顔勭拠鍓р柤
娑撳洣绗€妤傛ɑ銈奸獮鍐叉勾鐠у嚖绱濇潻娆庣昂鐠囧墽鈻兼稉杞扮稑閸︺劌鐨犳0鎴炲Η閺堫垶顣崺鐔枫亣鐏炴洘瀚甸懘姘剧礉閹垫挷绗呴崸姘杽閻ㄥ嫪绗撴稉姘唨绾偓...
- 瀵邦喗灏濈亸鍕暥濞村鍣洪幙宥勭稊閸╃顔勭拠鍓р柤閸氬牓娉�
鐠愵厺鎷遍崥鍫ユ肠閺囨潙鐤勯幆鐙呯礉缂冩垵鍨庨妴渚€顣剁拫鍙樺崕閵嗕胶銇氬▔銏犳珤閵嗕椒淇婇崣閿嬬爱閿涘本鍨滅憰浣圭壉閺嶉绨块柅锟�...