性能测试通常需要监控的指标包括:
1.服务器Linux(包括CPU、Memory、Load、I/O)。
2.数据库:1.Mysql 2.Oracle(缓存命中、索引、单条SQL性能、数据库[/url]线程数、数据池连接数)。
3.中间件:1.Jboss 2. Apache(包括线程数、连接数、日志)。
4.网络: 吞吐量、吞吐率。
5.应用: jvm内存、日志、Full GC频率。
6.监控工具(LoadRunner[/url]):用户执行情况、场景状态、事务响应时间、TPS等。
7.测试机资源:CPU、Memory、网络、磁盘空间。
监控工具
性能测试通常采用下列工具进行监控:
1.Profiler。一个记录log的类,阿里巴巴集团自主开发,嵌入到应用代码中使用。
2.Jstat。监控java[/url]进程GC情况,判断GC是否正常。
3.JConsole。监控java内存、java CPU使用率、线程执行情况等,需要在JVM参数中进行配置。
4.JMap。监控java程序是否有内存泄漏,需要配合eclipse插件或者MemoryAnalyzer来使用。
5.JProfiler。全面监控每个节点的CPU使用率、内存使用率、响应时间累计值、线程执行情况等,需要在JVM参数中进行配置。
6.Nmon。全面监控linux系统资源使用情况,包括CPU、内存、I/O等,可独立于应用监控。
7.Valgrind。监控C/C++程序是否存在内存泄漏,基于linux环境。
8.Vmmap和ApplicationVerifier。监控C/C++程序是否存在内存泄漏,基于windows环境。
性能分析
可按以下顺序:
中间件瓶颈(apache/jboss参数配置、数据库参数配置)->
应用服务的debug log ->
应用服务的filter log ->
本应用的性能瓶颈(SQL语句、索引、业务逻辑、线程池设置、算法)->
服务提供者的性能瓶颈 ->
相关联的底层存储应用的性能瓶颈
分析标准
通过性能指标的表现形式,分析性能是否稳定。比如:
1.响应时间是否符合性能预期,表现是否稳定。
2.应用日志中,超时的概率,是否在可接受的范围之内。
3.TPS维持在多大的范围内,是否有波形出现,标准差有多少,是否符合预期。
4.服务器CPU、内存、load是否在合理的范围内,等等。
分析工具
对于部分性能指标,可借助自动分析工具,统计出数据的总体趋势:
1.LoadRunner analysis
LoadRunner analysis是loadrunner的一个部件,用于将运行过程中所采集到的数据生成报表,主要用于采集TPS、响应时间、服务器资源使用情况等变化趋势。
2.Memory Analyzer
Memory Analyzer工具可以解析Jmap dump出来的内存信息,查找是否有内存泄漏。
3.nmon_analyser
nmon工具可以采集服务器的资源信息。列出CPU、MEM、网络、I/O等资源指标的使用情况。
lr性能分析图解释
Transactions(用户事务分析)
用户事务分析是站在用户角度进行的基础性能分析。
1、Transation Sunmmary(事务综述)
对事务进行综合分析是性能分析的第一步,通过分析测试时间内用户事务的成功与失败情况,可以直接判断出系统是否运行正常。
2、Average Transaciton Response Time(事务平均响应时间)
"事务平均响应时间"显示的是测试场景运行期间的每一秒内事务执行所用的平均时间,通过它可以分析测试场景运行期间应用系统的性能走向。
例:随着测试时间的变化,系统处理事务的速度开始逐渐变慢,这说明应用系统随着投产时间的变化,整体性能将会有下降的趋势。
3、Transactions per Second(每秒通过事务数/TPS)
"每秒通过事务数/TPS"显示在场景运行的每一秒钟,每个事务通过、失败以及停止的数量,使考查系统性能的一个重要参数。通过它可以确定系统在任何给定时刻的时间事务负载。分析TPS主要是看曲线的性能走向。
将它与平均事务响应时间进行对比,可以分析事务数目对执行时间的影响。
例:当压力加大时,点击率/TPS曲线如果变化缓慢或者有平坦的趋势,很有可能是服务器开始出现瓶颈。
4、Total Transactions per Second(每秒通过事务总数)
"每秒通过事务总数"显示在场景运行时,在每一秒内通过的事务总数、失败的事务总署以及停止的事务总数。
5、Transaction Performance Sunmmary(事务性能摘要)
"事务性能摘要"显示方案中所有事务的最小、最大和平均执行时间,可以直接判断响应时间是否符合用户的要求。
重点关注事务的平均和最大执行时间,如果其范围不在用户可以接受的时间范围内,需要进行原因分析。
6、Transaction Response Time Under Load(事务响应时间与负载)
"事务响应时间与负载"是"正在运行的虚拟用户"图和"平均响应事务时间"图的组合,通过它可以看出在任一时间点事务响应时间与用户数目的关系,从而掌握系统在用户并发方面的性能数据,为扩展用户系统提供参考。此图可以查看虚拟用户负载对执行时间的总体影响,对分析具有渐变负载的测试场景比较有用。
7、Transaction Response Time(Percentile)(事务响应时间(百分比))
"事务响应时间(百分比)"是根据测试结果进行分析而得到的综合分析图,也就是工具通过一些统计分析方法间接得到的图表。通过它可以分析在给定事务响应时间范围内能执行的事务百分比。
8、Transaction Response Time(Distribution)(事务响应时间(分布))
"事务响应时间(分布)"显示在场景运行过程中,事务执行所用时间的分布,通过它可以了解测试过程中不同响应时间的事务数量。如果系统预先定义了相关事务可以接受的最小和最大事务响应时间,则可以使用此图确定服务器性能是否在可以接受的范围内。
Web Resources(Web资源分析)
Web资源分析是从服务器入手对Web服务器的性能分析。
1、Hits per Second(每秒点击次数)
"每秒点击次数",即使运行场景过程中虚拟用户每秒向Web服务器提交的HTTP请求数。
通过它可以评估虚拟用户产生的负载量,如将其和"平均事务响应时间"图比较,可以查看点击次数对事务性能产生的影响。通过对查看"每秒点击次数",可以判断系统是否稳定。系统点击率下降通常表明服务器的响应速度在变慢,需进一步分析,发现系统瓶颈所在。
2、Throughput(吞吐率)
"吞吐率"显示的是场景运行过程中服务器的每秒的吞吐量。其度量单位是字节,表示虚拟用在任何给定的每一秒从服务器获得的数据量。
可以依据服务器的吞吐量来评估虚拟用户产生的负载量,以及看出服务器在流量方面的处理能力以及是否存在瓶颈。
"吞吐率"图和"点击率"图的区别:
"吞吐率"图,是每秒服务器处理的HTTP申请数。
"点击率"图,是客户端每秒从服务器获得的总数据量。
3、HTTP Status Code Summary(HTTP状态代码概要)
"HTTP状态代码概要"显示场景或会话步骤过程中从Web服务器返回的HTTP状态代码数,该图按照代码分组。HTTP状态代码表示HTTP请求的状态。
4、HTTP Responses per Second(每秒HTTP响应数)
"每秒HTTP响应数"是显示运行场景过程中每秒从Web服务器返回的不同HTTP状态代码的数量,还能返回其它各类状态码的信息,通过分析状态码,可以判断服务器在压力下的运行情况,也可以通过对图中显示的结果进行分组,进而定位生成错误的代码脚本。
5、Pages Downloader per Second(每秒下载页面数)
"每秒下载页面数"显示场景或会话步骤运行的每一秒内从服务器下载的网页数。使用此图可依据下载的页数来计算Vuser生成的负载量。
和吞吐量图一样,每秒下载页面数图标是Vuser在给定的任一秒内从服务器接收到的数据量。但是吞吐量考虑的各个资源极其大小(例,每个GIF文件的大小、每个网页的大小)。而每秒下载页面数只考虑页面数。
注:要查看每秒下载页数图,必须在R-T-S那里设置"每秒页面数(仅HTML模式)".
6、Retries per Second(每秒重试次数)
"每秒重试次数"显示场景或会话步骤运行的每一秒内服务器尝试的连接次数。
在下列情况将重试服务器连接:
A、初始连接未经授权
B、要求代理服务器身份验证
C、服务器关闭了初始连接
D、初始连接无法连接到服务器
E、服务器最初无法解析负载生成器的IP地址
7、Retries Summary(重试次数概要)
"重试次数概要"显示场景或会话步骤运行过程中服务器尝试的连接次数,它按照重试原因分组。将此图与每秒重试次数图一起使用可以确定场景或会话步骤运行过程中服务器在哪个时间点进行了重试。
8、Connections(连接数)
"连接数"显示场景或会话步骤运行过程中每个时间点打开的TCP/IP连接数。
借助此图,可以知道何时需要添加其他连接。
例:当连接数到达稳定状态而事务响应时间迅速增大时,添加连接可以使性能得到极大提高(事务响应时间将降低)。
9、Connections Per Second(每秒连接数)
"每秒连接数"显示方案在运行过程中每秒建立的TCP/IP连接数。
理想情况下,很多HTTP请求都应该使用同一连接,而不是每个请求都新打开一个连接。通过每秒连接数图可以看出服务器的处理情况,就表明服务器的性能在逐渐下降。
10、SSLs Per Second(每秒SSL连接数)
"每秒SSL连接数"显示场景或会话步骤运行的每一秒内打开的新的以及重新使用的SSL连接数。当对安全服务器打开TCP/IP连接后,浏览器将打开SSL连接。
Web Page Breakdown(网页元素细分)
"网页元素细分"主要用来评估页面内容是否影响事务的响应时间,通过它可以深入地分析网站上那些下载很慢的图形或中断的连接等有问题的
元素。
1、Web Page Breakdown(页面分解总图)
"页面分解"显示某一具体事务在测试过程的响应情况,进而分析相关的事务运行是否正常。
"页面分解"图可以按下面四种方式进行进一步细分:
1)、Download Time Breaddown(下载时间细分)
"下载时间细分"图显示网页中不同元素的下载时间,同时还可按照下载过程把时间进行分解,用不同的颜色来显示DNS解析时间、建立连接时间、第一次缓冲时间等各自所占比例。
2)、Component Breakdown(Over Time)(组件细分(随时间变化))
"组件细分"图显示选定网页的页面组件随时间变化的细分图。通过该图可以很容易的看出哪些元素在测试过程中下载时间不稳定。该图特别适用于需要在客户端下载控件较多的页面,通过分析控件的响应时间,很容易就能发现那些控件不稳定或者比较耗时。
3)、Download Time Breakdown(Over Time)(下载时间细分(随时间变化))
"下载时间细分(随时间变化)" 图显示选定网页的页面元素下载时间细分(随时间变化)情况,它非常清晰地显示了页面各个元素在压力测试过程中的下载情况。
"下载时间细分"图显示的是整个测试过程页面元素响应的时间统计分析结果,"下载时间细分(随时间变化)"显示的事场景运行过程中每一秒内页面元素响应时间的统计结果,两者分别从宏观和微观角度来分析页面元素的下载时间。
4)、Time to First Buffer Breakdown(Over Time)(第一次缓冲时间细分(随时间变化))
"第一次缓冲时间细分(随时间变化)"图显示成功收到从Web服务器返回的第一次缓冲之前的这段时间,场景或会话步骤运行的每一秒中每个网页组件的服务器时间和网络时间(以秒为单位)。可以使用该图确定场景或会话步骤运行期间服务器或网络出现问题的时间。
First Buffer Time:是指客户端与服务器端建立连接后,从服务器发送第一个数据包开始计时,数据经过网络传送到客户端,到浏览器接收到第一个缓冲所用的时间。
2、Page Component Breakdown(页面组件细分)
"页面组件细分"图显示每个网页及其组件的平均下载时间(以秒为单位)。可以根据下载组件所用的平均秒数对图列进行排序,通过它有助于隔离有问题的组件。
3、Page Component Breakdown(Over Time)(页面组件分解(随时间变化))
"页面组件分解(随时间变化)"图显示在方案运行期间的每一秒内每个网页及其组件的平均响应时间 (以秒为单位)。
4、Page Download Time Breakdown(页面下载时间细分)
"页面下载时间细分"图显示每个页面组件下载时间的细分,可以根据它确定在网页下载期间事务响应时间缓慢是由网络错误引起还是由服务器错误引起。
"页面下载时间细分"图根据DNS解析时间、连接时间、第一次缓冲时间、SSL握手时间、接收时间、FTP验证时间、客户端时间和错误时间来对每个组件的下载过程进行细分。
5、Page Download Time Breakdown(Over Time)(页面下载时间细分(随时间变化))
"页面下载时间细分(随时间变化)"图显示方案运行期间,每一秒内每个页面组件下载时间的细分。使用此图可以确定网络或服务器在方案执行期间哪一时间点发生了问题。
"页面组件细分(随时间变化)"图和"页面下载时间细分(随时间变化)"图通常结合起来进行分析:首先确定有问题的组件,然后分析它们的下载过程,进而定位原因在哪里。
6、Time to First Buffer Breakdown(第一次缓冲时间细分)
"第一次缓冲时间细分"图显示成功收到从Web服务器返回的第一次缓冲之前的这一段时间内的每个页面组件的相关服务器/网路时间。如果组件的下载时间很长,则可以使用此图确定产生的问题与服务器有关还是与网络有关。
网络时间:定义为第一个HTTP请求那一刻开始,直到确认为止所经过的平均时间。
服务器时间:定义为从收到初始HTTP请求确认开始,直到成功收到来自Web服务器的一次缓冲为止所经过的平均时间。
7、Time to First Buffer Breakdown(Over Time)(第一次缓冲时间细分(随时间变化))
"第一次缓冲时间细分(随时间变化)"图显示成功收到从Web服务器返回的第一个缓冲之前的这段时间内,场景运行的每一秒中每个网页组件的服务器时间和网络时间。可以使用此图确定场景运行期间服务器或网络出现问题的时间点。
8、Downloader Component Size(KB)(已下载组件大小)
"已下载组件大小"图显示每个已经下载的网页组建的大小。通过它可以直接看出哪些组件比较大并需要进一步进行优化以提高性能。