应用走向云端的性能测试挑战
2013-03-11覃文闯胡一鸣
周 悦,覃文闯,胡一鸣
(国家应用软件产品质量监督检验中心,北京100193)
云计算被认为是继个人电脑、互联网之后信息技术的又一次重大变革。我国国民经济和社会发展“十二五”规划纲要把以云计算为代表的新一代信息技术确定为战略性新兴产业的发展重点。以云计算模式为服务特点的应用将在各行业中得到快速发展[1]。
(1)电信行业的三大运营商加快实施云计算战略,借助云计算实现业务创新。
(2)在金融行业中小型金融行业合力搭建公有云服务中心。
(3)政府通过云计算平台建设带动电子政务改革。
(4)教育行业建立共享云平台提高资源利用率。
在云端应用蓬勃发展的时代潮流中,面对云端应用不同于传统应用的特点,在性能测试领域也面临新的挑战,对云端应用性能测试在方法上需要创新。云计算服务模式下性能测试面临着诸多挑战。
1 传统性能测试模式发展滞后
相对于云计算服务应用,传统应用的服务器资源网络资源是摸得着看得见的,是数据和资源集中模式的部署,对于传统模式的应用当前的自动化测试工具能高效代替人工完成性能测试,但是面对高度透明化和系统超大规模化的云计算服务应用,传统的性能测试工具和方法的发展已经滞后。
随着网络日益复杂化、异构化,特别是云计算背景下蓬勃发展的虚拟化技术、分布式计算、分布式存储等新技术发展,云计算服务的应用模式变得日益透明和庞大。很多时候,不仅被测对象是庞大的数量规模,甚至被测对象是看不到摸不着的云端应用。传统测试方法和工具面临更大的挑战。
对于在云环境中的应用来说,要测试与应用有关的网络性能、服务器性能、数据库性能、软件性能以及它在客户端上的缓存情况。对于在云环境中只有在某个位置上运行的一个应用,但是对于Amazon或Facebook来说,应用分布在许多不同且无法预测的位置上。这种情况显然要比运行一个基于单一服务器的应用测试脚本复杂得多。
2 传统性能测试方法的局限
2.1 海量云端压力的模拟
目前性能测试工具的模拟用户量受限且许可协议受约束。以LoadRunner为例,上万级别的许可费用往往高达百万元的级别,而对于类似于铁路售票、公务员考试报名、淘宝应用等动辄几十万甚至上百万的用户压力,这类测试工具往往无能为力。即使许可允许,对于压力机的部署数量也是一个恐怖的数字。假设一台4核CPU,8 GB内存的服务器能模拟产生10 000用户在线的脚本压力,对于上述透明统一的“云端”应用系统动辄需要几十台甚至上百台压力机进行测试,形成了多台压力机压云端的形态,测试成本非常庞大。这是传统压力测试中“一机压多机”的模式所不能比的。
2.2 传统测试工具获得真实用户体验的难度
传统数据集中式情况下的性能测试结果往往更多反应的是系统本身的性能,对于用户的真实体验情况数据支撑不够。而云端服务的应用模式、服务器、数据、存储等资源都是透明化的,对于服务提供商来说不仅仅关心的是系统自身的性能,更大程度上服务提供商同样关心分布在各地的用户体验,这是服务提供商的QoS指标。对于最终用户来说,获取良好的QoS体验是其接受云服务的源动力之一。
目前性能测试工具可以模拟出用户的访问行为,但是脚本记录往往是某次访问的路径,不能代表所有用户的访问路径,所以当前脚本要遍历用户的访问路径在脚本开发和工具部署方面将付出巨大的成本。
2.3 网络运营商及CDN服务提供商对性能测试的影响
图1所示是一个典型互联网售票系统使用CDN[2]技术进行网络加速的应用。这类架构的系统具有典型的代表性。可以看出相对于原来无CDN技术的数据中心模式,当前云服务应用的整个生态链融入了更多的厂商和应用,其中网络运营商和CDN服务提供商是大型云计算服务器应用不可回避的机构。性能测试同样需要这些诸多方面的配合。如测试网络带宽限制与协调、模拟IP的限制与协调、接入的安全问题、与其他云服务的测试隔离问题等。
图1 典型互联网售票系统基于CDN的原理图
3 目前行业场景的云服务性能测试方式
3.1 完全模拟云端压力测试
此种方式的测试结果参考性最强。但是对于大型的云端应用,如淘宝系统、公众售票系统、LoadRunner等传统的压力测试工具无法模拟海量用户,目前LoadRunner可获取的许可只是65 000个虚拟用户,无法面对几十万甚至上百万的测试用户需求。而且需要获得网络运营商和网络分发服务商的支持和配合,受限大。目前得到应用的往往是一些小规模的云计算应用,比如小型企业私有云测试。
3.2 混合测试策略
用传统压力工具如LoadRunner在内网进行背景压力产生,结合云端的用户体验工具进行模拟。此方法测试结果参考性相对于独立的内网测试要强,但是同样无法模拟大量的云端压力,无法遍历云端应用的用户访问路径,获取全面的用户体验数据。
3.3 无云端内网测试
抛开云端用户体验的测试,在系统的内网进行测试,结果数据只能代表系统本身的性能,无法获取散布的用户体验数据。
3.4 对云端服务器进行切片测试
通过推演计算云端服务能力进行切片测试。此方法虽执行容易,但是测试结果参考性最差。
4 业内的测试方法探讨与尝试
基于目前云计算服务模式的发展,当前行业内传统的性能测试方法已经相对滞后。云计算服务模式对性能测试的要求更高,如更高的海里压力模拟、更丰富的用户体验数据等。面对这个局面,业内也在进行新测试方法的尝试和探讨。
4.1 超算中心
使用超级计算中心产生压力,针对各地CDN以及系统本身进行性能测试。模拟负载来自不同的地域,可以综合模拟在南北方不同网络环境下的并发与在线情况;高性能计算机规模大,可以模拟大规模的虚拟用户。但压力通过不同运营商链路复杂,拓扑不明,可能导致模拟的负载失效,而且带宽租赁成本较高,1 Gb/s运营商带宽租赁费用达数十万元。
4.2 通过云端产生测试压力用于测试云计算应用
这将是今后云性能测试的发展方向和理念。利用现有成熟的网络技术和虚拟化技术将分布在世界各个角落的压力机整合起来进行性能测试也是一种值得探讨的方式。性能测试云平台的概念是基于通过云端压力测试云端服务的理念,是超算中心模式的延伸,这个超算中心不是超级计算机的集中,而是大量廉价服务器的集中,将大量廉价服务器的计算能力整合为云端压力的产生平台。如Compuware公司的Gomez云测试平台[3]和NEOTYS公司的Neolaod云测试平台[4],目前此类测试服务的价格都是非常昂贵的。
4.3 整合开源测试软件进行二次开发新的云端测试平台
可以预见在将来使用云端性能测试工具进行云端服务的性能测试将是一个新的业务增长点,应对这个业务增长需求,除了购买昂贵的商业云测试工具服务外,整合现有的开源软件测试工具进行二次开发,从当前的工具功能和开发技术来说具备技术可行性,这样基于开源平台的云端测试平台将是很低廉的。
[1]野村综合研究所技术调查部.2010-2014年全球信息技术导航图[J].2010:60-72.
[2]内容分发网络[EB/OL].[2010-03-06]http://baike.baidu.com/view/21895.htm.
[3]Gomez[EB/OL].[2010-09-16]http://www.compuware.com/application-performance-management.
[4]Neoload testing[EB/OL].[2010-04-12]http://www.neotys.com/.