吴瑕
四川邮电职业技术学院 四川成都 610067
目前的许多大型系统都是由多个系统或组件构成的,而随着网络的发展,多用户、高并发、数据集中等特性,都给提供服务的系统带来严重负荷。软件系统的性能对于客户而言,是可以直接感受的。如果用户在系统面前得到“当前系统忙,请稍后再试”的信息,那么他们可能会失去耐心放弃等待,这就是性能问题。排队等待,往往是性能问题导致的。
性能测试的目的在于,通过制定性能测试策略、测试计划、执行测试脚本、分析测试结果,来寻找当前性能瓶颈,优化系统性能,改善性能状况。本文采用主流的性能测试工具Loaderunner,针对系统Web端进行性能测试,并选取其中的一个查询页面进行性能指标分析。
辞海中性能一词是用来描述机械、器材、物品等所具有的速度、效率和能力的综合评价。性能测试即是对机械、器材、物品的性能定性或定量的量测过程。在计算机的世界里,性能是一种指标,表明软件系统或构件对于其及时性要求的符合程度。Web性能测试主要考虑以下几个因素:网络带宽,工作负载,并发用户数量,请求响应时间,事务响应时间,吞吐量,吞吐率,TPS,点击率,资源利用率等。将这些指标数据加以分析,能够挖掘出系统配置、SQL语句、内存泄露、递归算法、代码逻辑等问题,很好的知道系统性能,预估系统承受能力,确定问题所在并及时优化。
常见的性能测试分以下几类:稳定性测试、压力测试、负载测试。负载测试指目标系统正常运行的前提下,它所能承担的最大服务负荷数量。例如,逐渐增加模拟用户的数量,观察不同用户负载下系统的资源占用情况、吞吐率、及事务的响应时间等。稳定性测试,也叫可靠性测试,指的是在给定的负荷的情况下,有外界或内部非正常的干扰的,系统能提供稳定服务的能力。例如,让系统持续运行一两天,甚至更久,检查系统是否能够稳定运行。有些系统会在执行到十几个小时之后,逐渐变慢。压力测试指在指定的负载的情况下,目标系统长时间提供正确服务系统的能力。例如,测试一个 Web 站点在大负荷工作下,系统的响应何时会退化或失败。通常情况下,压力测试要分析磁盘空间、系统内存、网络带宽、CPU 可用性等。
一个简单的Web请求处理包括(1)客户发送请求;(2)服务器接受到请求并进行处理;(3)服务器向DB获取数据;(4)服务器生成用户的页面,返回给用户。那么,针对Web的性能测试,主要参考的指标有:
1、事务(Transaction)
一个事务表示一个完整的请求处理。一般的响应时间都是针对事务而言的。
2、请求响应时间(Response Time)
请求响应时间指从客户端client发起一个请求开始,到客户端接收到服务器返回的响应结束,所耗费的时间。一般用“秒”或者“毫秒”为单位来度量。参考2/5/10原则:当响应时间在2秒内,用户会感觉系统速度很快;当响应时间在2-5秒内,用户会感觉系统速度还行;当响应时间在5-10秒内,用户会感觉系统速度慢,但勉强能够接受;当响应时间超过10秒,用户会认为系统已经失去响应,准备发起第二次请求,或转向其他系统。
3、每秒处理事务数(Transaction per Second)
这是分析性能的重要指标,该指标用来评价场景运行的每一秒钟,通过事务的数量。通过它可以确定系统在任何给定时刻的时间事务负载。将TPS的曲线走向,与平均事务响应时间进行对比,可以分析事务数目对执行时间的影响。
4、系统负载(Load)
计算机系统中进程队列的大小,即计算机系统在一段时间内可以处理的工作任务的多少。
5、CPU利用率(CPU usage)
CPU利用率表示运行的程序占用的CPU资源,利用率越高,表明在此期间有很多进程在运行,有可能是应用程序设计不良,需要优化。CPU分为用户态,系统态和空闲态,分别表示CPU处于用户态执行的时间,系统内核执行的时间,和空闲系统进程执行的时间。
3.1 测试需求
某系统平台首页查询页面,目前访问量大概为日均10万次。通过对服务端的服务请求压力测试,了解服务端的平均响应时间(RT),平均事务处理量(TPS)、单台服务器的最大并发事务处理量;单台服务器在最大并发事务处量的压力下系统硬件资源性能及利用率;通过对各系统压力测试,了解系统平均响应时间(Response time)、每秒处理事务数(TPS)、系统资源(CPU Using, System Load, Memory Using, System I/O)、单个事务的拐点。
测试基准,DB中表task_info已有的记录大概为10万。
3.2 测试步骤
分析需求,创建脚本,定义虚拟用户数,创建场景,运行场景,得出测试结果,分析测试结果并评估。
3.3 测试结果
并发用户数,从20个增加到60个,得到的性能指标如表1所示:
表1 系统性能指标表
图1 30个用户并发的TPS—响应时间关系图
图2 30个虚拟用户并发执行时间
30个用户并发的CPU利用率,均值约为40%,其中CPU1-CPU4的利用率分别为50%、28%、31%、30%。
3.4 测试分析
从图1可以看出,当30个用户并发时,系统TPS处理,及响应时间达到拐点。那么,我们可将30个用户并发作为系统峰值。从响应时间来看,通过查询系统日志得知,开始发送查询请求,到查询请求返回的时间约为3秒。代码层面,可对此查询做DB层面的优化。
从TPS来看,按5台服务器集群来计算,得到线上每天能处理的事务数:3.55*5*3600*24*80%=122680,约122.6万笔。
本文介绍了Web性能测试的定义,介绍了Web性能测试的关注指标。最后针对某系统中的一个Web查询页面进行性能测试实践,找到系统瓶颈,得到系统性能指标。