性能测试指标
浅谈软件性能测试中关键指标的监控与分析浅谈软件性能测试中关键指标的监控与分析 一、软件性能测试需要监控哪些关键指标?一、软件性能测试需要监控哪些关键指标? 软件性能测试的目的主要有以下三点: Ø 评价系统当前性能,判断系统是否满足预期的性能需求。 Ø 寻找软件系统可能存在的性能问题,定位性能瓶颈并解决问题。 Ø 判定软件系统的性能表现,预见系统负载压力承受力,在应用部署之前,评估系统性能。 而对于用户来说,则最关注的是当前系统: Ø 是否满足上线性能要求? Ø 系统极限承载如何? Ø 系统稳定性如何? 因此,针对以上性能测试的目的以及用户的关注点,要达到以上目的并回答用户的关注点, 就必须首先执行性能测试并明确需要收集、监控哪些关键指标,通常情况下,性能测试监 控指标主要分为:资源指标和系统指标,如下图所示,资源指标与硬件资源消耗直接相关, 而系统指标则与用户场景及需求直接相关。 性能测试监控关键指标说明:性能测试监控关键指标说明: Ø 资源指标资源指标 CPUCPU 使用率:使用率:指用户进程与系统进程消耗的CPU 时间百分比,长时间情况下,一般可接 受上限不超过 85%。 内存利用率:内存利用率:内存利用率=(1-空闲内存/总内存大小)*100%,一般至少有 10%可用内存, 内存使用率可接受上限为85%。 磁盘磁盘 I/O:I/O: 磁盘主要用于存取数据,因此当说到IO 操作的时候,就会存在两种相对应的操 作,存数据的时候对应的是写IO 操作,取数据的时候对应的是是读IO 操作,一般使用% Disk Time(磁盘用于读写操作所占用的时间百分比)度量磁盘读写性能。 网络带宽:网络带宽:一般使用计数器 Bytes Total/sec来度量,Bytes Total/sec表示为发送和接收字 节的速率,包括帧字符在内。判断网络连接速度是否是瓶颈,可以用该计数器的值和目前 网络的带宽比较。 Ø 系统指标:系统指标: 并发用户数并发用户数:某一物理时刻同时向系统提交请求的用户数。 在线用户数:在线用户数:某段时间内访问系统的用户数,这些用户并不一定同时向系统提交请求。 平均响应时间:平均响应时间:系统处理事务的响应时间的平均值。事务的响应时间是从客户端提交访问 请求到客户端接收到服务器响应所消耗的时间。对于系统快速响应类页面,一般响应时间 为 3 秒左右。 事务成功率:事务成功率:性能测试中,定义事务用于度量一个或者多个业务流程的性能指标,如用户 登录、保存订单、提交订单操作均可定义为事务,如下图所示: 单位时间内系统可以成功完成多少个定义的事务,在一定程度上反应了系统的处理能力, 一般以事务成功率来度量,计算公式如下所示: 超时错误率:超时错误率:主要指事务由于超时或系统内部其它错误导致失败占总事务的比率。 二、如何监控关键指标?二、如何监控关键指标? Ø 资源指标监控资源指标监控 主要针对各服务器系统平台(Windows、Linux、Unix 等)资源使用进行监控。 可以使用系统自带的性能监控工具或者第三方工具进行监控,如Windows 系统自带的“系 统性能监视器”,如下图所示: Linux 系统下,free、vmstat、sar、iostat 等命令监控内存、CPU、磁盘 IO 等的使用情况, 如下图所示: 第三方监控工具,如 spotlight,spotlight是 quest 公司开发的一款可以针对多种系统平台 及数据库进行监控的可视化工具,如下图所示: Nmon 是 IBM 提供的监控 AIX 和 Linux 系统资源的免费工具,可以对收集的资源信息通过 Excel 进行统计分析形成直观的统计图,如下图所示: Ø 系统指标监控 系统指标监控一般通过性能测试工具(如LoadRunner、Jmeter等)以图形化方式监控, 如下图所示,并发用户数与平均响应时间关系图。 三、如何分析监控的关键指标?三、如何分析监控的关键指标? 通过第二部分监控收集到性能度量关键指标,如何进行分析,并判断是否存在性能瓶颈呢? 以下主要从资源指标与系统指标两方面进行阐述。 Ø 资源指标分析资源指标分析 判断判断 CPUCPU 是否是瓶颈的方法:是否是瓶颈的方法:一般情况下 CPU 满负荷工作,有时候并不能判定为CPU 出现瓶颈,比如 Linux 总是试图要 CPU 尽可能的繁忙,使得任务的吞吐量最大化,即 CPU 尽可能最大化使用。因此,一般判断CPU 为瓶颈,主要从两方面:一是CPU 空闲持 续为 0,二是运行队列大于 CPU 核数(经验值 3-4 倍),即可判定存在瓶颈,对于CPU 高消耗主要由什么引起的,可能是应用程序不合理造成,也可能是硬件资源不足,需要具 体问题具体分析,比如问题SQL 语句引起,则需要跟踪并优化引起CPU 使用过高的 SQL 语句。 判断内存是否是瓶颈的方法:判断内存是否是瓶颈的方法:一般至少有 10%可用内存,内存使用率可接受上限为 85%。 当空闲内存变小时,系统开始频繁地调动磁盘页面文件,空闲内存过小可能是内存不足或 内存泄漏引起,需要根据系统实际情况监控分析。 判断磁盘判断磁盘 I/OI/O 是否是瓶颈的方法:是否是瓶颈的方法:磁盘 I/O 对于数据库服务器、文件服务器、流媒体服务 器系统来说,更容易成为瓶颈,一般从以下几个方面对磁盘I/O 进行分析判断: ① 计算每磁盘 I/O 数 每磁盘 I/O 数可用来与磁盘的 I/O 能力进行对比,如果经过计算得到的每磁盘I/O 数超过了 磁盘标称的 I/O 能力,则说明确实存在磁盘的性能瓶颈,每磁盘I/O 计算方法如下表: RAIDRAID 类型类型计算方法计算方法 RAID0(Reads+Writes)/Numbers of Disks RAID1(Reads+2*Writes)/2 RAID5[Reads+(4*Writes)] /Numbers of Disks RAID10 [Reads+(2*Writes)] /Numbers of Disks ② 监控磁盘读写,如果磁盘长时间进行大数据量读写操作,且cpu 等待超过 20%,则说 明磁盘 I/O 存在问题,考虑提高磁盘I/O读写性能。 判断网络带宽是否是瓶颈的方法:判断网络带宽是否是瓶颈的方法:判断网络带宽是否是系统运行性能瓶颈的首要条件是网 络带宽是否会影响系统交易执行性能。例如:减小网络带宽,并发用户数、响应时间与事 务通过率等性能指标是否不能接受;或者增加网络带宽,并发用户数、响应时间与事务通 过率等性能指标会得到明显提高。 在实际性能测试中,如果发现始终报连接超时,而实际手工访问可以正常访问,可以通过 ping 应用服务器 IP 或网关 IP,如果出现网络严重延迟或丢包,则说明网络不稳定,需要 检查网络。 通过对资源指标四个指标的分析,实际上各个方面都是互相依赖的,不能孤立的单从某个 方面进行排查。当一个方面出现性能问题时,往往会引发其他方面的性能问题,例如,大 量的磁盘读写势必消耗 CPU 和 IO 资源,而内存的不足会导致频繁地进行内存页写入磁盘、 磁盘写到内存的操作,造成磁盘IO 瓶颈,同时,大量的网络流量也会造成CPU 过载,所 以,在分析性能问题