应用负载压力测试
8.1负载压力测试概述
8.1.1负载压力基础概念系统的负载压力是指系统在某种指定软件、硬件以及网络环境下承受的流量,例如并发用户数、持续运行时间、数据量等,其中并发用户数是负载压力的重要体现。当有大量用户同时使用时,可能会出现功能失效、性能衰减、甚至系统崩溃的现象。
8.1.2负载压力测试基础概念
负载压力测试是指在一定约束条件下测试系统所能承受的并发用户量、运行时间、数据量,以确定系统所能承受的最大负载压力。
负载压力测试有助于确认被测系统是否能够支持性能需求,以及预期的负载增长等。负载压力测试不只是关注不同负载场景下的响应时间等指标,它也要通过测试来发现在不同负载场景下会出现的。
负载压力测试是性能测试的重要组成部分,负载压力测试包括并发性测试、疲劳强度测、大数据量测试等内容。
1、性能测试
2、性能评测
性能评测主要内容包括以下两项内容:
在真实环境下,检查系统服务等级的满足情况,评估并报告整个系统的性能。
对系统的未来容量作出预测和规划。
性能评测是性能调优的基础。
3、性能调优
性能调优的步骤如下:
查找形成系统瓶颈或者故障的根本原因;
进行性能调整和优化;
评估性能调整和效果;
在通常情况下,性能调优的过程是上述步骤循环执行的过程,以实现目标。
4、负载测试
负载测试是通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统所能承受的最大负载量的测试。
5、压力测试
压力测试是通过逐步增加系统负载,测试系统性能的变化,并最终确定在什么负载条件下系统性能处于失效状态,并以此来获得系统能提供的最大服务级别的测试。
通俗地讲,压力测试是为了发现在什么条件下系统的性能变得不可接受。
压力测试是一种特定类型的负载测试。例如,访问一个页面的响应时间规定为不超过1秒,负载测试就是测试在响应时间为1秒时,系统所能承受的最大并发访问用户的数量,而压力测试就是测试系统在多大的并发访问用户数量下,响应时间不可接受,例如超过1分钟(定义为失效状态)。
6、并发性能测试
并发性能测试的过程,是一个负载测试和压力测试的过程。即逐渐增加并发用户数负载,直到系统的瓶颈或者不能接收的性能点,通过综合分析交易执行指标、资源监控指标等来确定系统并发性能的过程。并发性能测试是负载压力测试中的重要内容。
一个完整解决方案的角度考虑,并发性能测试概括为以下3类:
应用在客户端性能的测试;
应用在网络上性能的测试;
应用在服务器上性能的测试。
7、疲劳强度测试
通常是采用系统稳定运行情况下能够支持的最大并发用户数,或者日常运行用户数,持续执行一段时间业务,保证达到系统疲劳强度需求的业务量,通过综合分析交易执行指标和资源监控指标,来确定系统处理最大工作量强度性能的过程。一般情况下利用疲劳强度测试来模拟系统日常业务操作。
8、大数据量测试
分为两类:
独立的数据量测试指针对某些系统存储、传输、统计、查询等业务进行大数据量测试。
综合数据量测试指和压力性能测试、负载性能测试、疲劳性能测试相结合的综合测试。
8.1.3负载压力测试目的
负载压力测试的目的可以概括为以下几个方面:
在真实环境下检测系统性能,评估系统性能以及服务等级的满足情况。
预见系统负载压力承受力,在应用实际部署之前,评估系统性能。
分析系统瓶颈、优化系统。
测试工程师的建议是,调优的最终目的是各个指标的调整取得系统的平衡点,也即达到了系统性能的最佳点。
负载压力测试将为企业项目的实施提供信心,帮助用户正确地进行容量规划,实现软硬件投资合理化,最终交付高质量的系统,避免项目投产失败,保证用户的投资得到相应的回报。
8.1.4负载压力测试策略
利用商业化测试工具进行测试。
比如:LoadRunner、QALoad等
开发资源测试工具进行测试。
OPenSTA http://portal.opensta.org
TestMaker http://www.pushtotest.com
Apache JMeter http://jakarta.apache.org/jmeter
8.1.5产品生命周期中负载压力测试计划
(1)在需求分析中充分关注负载压力性能
(2)从设计中得到负载压力性能指标
(3)开发阶段创建一个负载压力性能测试环境
(4)验收阶段在多等级范围内测试并调优
(5)运行阶段持续监控系统负载压力性能
8.1.6负载压力测试中的盲点
8.2负载压力测试解决方案
8.2.1并发性能测试
系统的并发性能是负载压力性能的最主要的组成部分,首先我们来讨论什么是“并发”。对一个系统来讲,某些业务操作对特定角色用户来讲存在很大的同时操作的可能性。
1、应用在客户端性能的测试
在客户端模拟大量并发用户执行不同业务操作,达到实施负载压力的目的。
采用负载压力测试工具来模拟大量并发用户,模拟机制如图8-2所示,主要组成部分包括主控台、代理机以及被测服务器,各部分采用网络连接。主控台负载管理各个代理以及收集各代理测试数据,代理负责模拟虚拟用户加压。在每次并发性能测试中,只有一台主控台,但可以有多个代理。
以LoadRunner负载压力测试工具为例,看看工具是如何实现的。
要模拟真实的负载压力做测试,必须创建方案,方案是用以模拟现实生活中用户的方式。方案包含有关如何模拟实际用户的信息:虚拟用户(Vuser)组、Vuser将运行的测试脚本,以及用于运行脚本的负载生成器计算机。
如果选择创建常规手动方案,则会将选择的每个脚本分配给Vuser组。然后,可以为每个Vuser组分配多个Vuser。可以指示某个组中的所有Vuser在同一台负载生成器计算机上运行相同的脚本,以也可为组中的各个Vuser分配不同的脚本和负载生成器。使用百分比模式创建手动方案,可以定义方案中要使用的Vuser总数,并为每个脚本分配负载生成器和占总数一定百分比的Vuser。
在一个面向目标的方案中,可定义五种类型的目标:虚拟用户数、每秒点击次数(仅Web Vuser)、每秒事务数、每分钟页面数(仅Web Vuser)或事务响应时间。
虚拟用户目标类型:测试应用程序可以同时运行多少个Vuser。
每秒点击次数、每分钟页面数或每秒事务数:测试服务器的稳定性。需要指定LoadRunner运行的Vuser范围(最大值、最小值),以及每秒事务数目标类型的“事务名称”。Controller(测试工具的主控台)将尽量使用最少数量的Vuser来达到定义的目标。如果使用最小Vuser数不能达到该目标,则Controller将逐渐增加Vuser数,直到达到所定义的最大数。如果使用指定的最大Vuser数仍不能达到指定的目标,Controller将增加Vuser数,并再次执行方案。
LoadRunner将根据定义的目标自动创建一个方案。在一个面向目标的方案中,可以定义五种类型的目标:
虚拟用户目标类型:测试应用程序可以同时运行多少个Vuser。
每秒点击次数、每分钟页面数或每秒事务数:测试服务器的稳定性。
事务响应时间目标类型:测试在期望的事务响应时间内可以同时运行多少个Vuser,在脚本中指定想要测试的事务的名称以及LoadRunner要运行的Vuser数量范围(最大值、最小值)。
2、应用在网络上性能的测试
这部分主要包括两部分内容,一是应用网络故障分析;二是网络应用性能监控。
应用网络故障分析的测试目标是显示网络带宽、延迟、负载和TCP端口的变化是如何影响用户的响应时间的。通过测试,我们可以做到下面几点。
(1)优化性能;
(2)预测系统响应时间;
(3)确定网络带宽需求;
(4)定位应用程序和网络故障。
借助于网络故障分析工具,可以解决下列问题。
(1)使应用跨越多个网段的活动过程变得清晰;
(2)提供有关应用效率的统计数据;
(3)模拟最终用户在不同网络配置环境下的响应时间,决定应用投产的网络环境。
网络故障分析工具的工作机理,可以总结为“多个捕捉点,一个分析”。捕捉点即“Agent”,利用主控台“Agent Manager”进行分析,Agent被动监听数据包来实现实时数据采集,Agent Manager完成对所跟踪到的数据的分析,可以自由地捕捉代理放在不同的平台,例如,Windows或UNIX。如图8-3所示的主控台为Management Console,捕捉点为代理探针Probe。
我们可以在应用逻辑路径上进行多点数据采集,并且在任何两个节点间进行数据整合,测量分段的响应时间,分析应用故障。
3、应用在服务器上性能的测试
8.2.2疲劳强度测试
1、日常业务疲劳强度模拟
2、高峰业务疲劳强度模拟
8.2.3大数据量测试
1、大数据量测试类型
(1)独立数据量测试
(2)综合数据量测试
2、自动生成大数据量
3、大数据量管理
8.3负载压力测试指标
8.3.1交易处理性能指标
并发用户数指标
交易处理指标
(1)平均事务响应时间。
(2)每秒事务数。
(3)每秒事务总数。
(4)事务摘要。
(5)事务性能摘要。
(6)事务响应时间(负载下)
(7)事务响应时间(百分比)
(8)事务响应时间(分布)。
web请求指标
(1)每秒点击次数。
(2)点击次数摘要。
(3)吞吐量
(4)吞吐量摘要。
(5)HTTP状态代码摘要。
(6)每秒HTTP响应数。
(7)每秒下载页面数。
(8)每秒重试次数。
(9)重试次数摘要。
(10)连接数。
(11)每秒连接数。
(12)每秒SSL连接数。
web页面组件指标
(1)激活网页细分。
(2)页面组件细分。
(3)页面组件细分(随时间变化)
(4)页面下载时间细分
(5)页面下载时间细分(随时时间变化)
(6)第一次缓冲细分时间
(7)第一次缓冲时间细分(随时间变化)
(8)已下载组件大小。
8.4负载压力测试实施
8.4.2测试计划
1、分析应用程序
(1)确定系统组件
(2)描述系统配置
(3)分析使用模型
2、定义测试目标
(1)以可度量的指标制定目标
(2)确定测试的时间
3、计划方案实施
(1)定义性能度量的范围
(2)定义Vuser活动
(3)选择Vuser
(4)选择测试硬件和软件
8.4.3测试需要分析
1、测试需求内容
2、负载压力测试需求分析原理
3、需要分析方法
4、测试数据准备
5、自己动手编写测试工具
8.4.11结果评估与测试报告
1、交易处理性能评估
交易处理性能评估指标主要包括:
并发用户数。
一类是系统最佳性能的并发用户数,另一类是系统能够承受的最大并发用户数。
交易响应时间
该指标描述交易执行的快慢程度,这是用户最直接感受到的系统性能,也是故障定位迫切需要解决的问题。
交易通过率
指每秒钟能够成功执行的交易数。
吞吐量
指每秒通过的字节数,以及通过的总字节数。
点击率
描述系统响应请求的快慢。
2、资源占用性能评估
资源占用主要涉及服务器操作系统资源占用、数据库资源占用、中间件资源占用等内容,下面分别论述。
(1)服务器操作系统资源占用
将服务器操作系统资源占用监控指标概括为以下几个方面:
1)CPU
2)磁盘管理
3)内存
4)交换区SWAP
5)进程
6)安全控制
7)文件系统
(2)数据库资源占用监控指标包括
读写页面的使用情况
超出共享内存缓冲区的操作数
上一轮询期间作业等待缓冲区的时间。
共享内存中物理日志和逻辑日志的缓冲区的使用率
磁盘的数据块使用情况以及被频繁读写的热点区域。
用户事务或者表空间事务
数据库锁资源。
关键业务的数据表的表空间增长。
SQL执行情况
(3)中间控件资源占用监控
中间件主要包括:
Web中间件
应用中间件
交易中间件
其他中间件
3、故障分析
(1)故障分析重点内容
1)CPU问题
2)内存和高速缓存
3)磁盘(I/O)资源问题
4)配置参数
5)应用系统网络设置
6)数据库服务器故障定位
4、负载压力典型问题分析
非正确执行的处理
速度瓶颈与延迟
不能达到满意服务水平
接口页面不能正确地装载或者根本不能转载。
5、Web网站故障分析举例
数据库服务器性能问题及原因分析
(1)单一类型事务响应时间过长
1)数据库服务器负载过重
2)糟糕的数据库设计
3)事务粒度过大
4)批任务对普通用户性能的影响
(2)并发处理能力差
(3)锁冲突严重
(4)监视并记录性能相关数据
(5)定位资源占用较大的事务并做出必要的优化或调整
(6)定位锁冲突,修改锁冲突发生严重的应用逻辑
(7)进行必要的数据分布。
标签:应用负载压力测试