性能测试(五)性能分析方法

影响软件应用性能的因素有很多,下面简单介绍下其中几种影响因素及分析方法。     ————参考书籍《软件性能测试过程详解与案例剖析》

有关于Windows和linux系统的性能计数器,大家可参考虫师的博客:http://www.cnblogs.com/fnng/archive/2012/10/30/2747246.html

一、内存分析

内存的使用情况是系统性能中重要的因素之一,频繁的页交换及内存泄露都会影响到系统的性能(这里主要以Windows系统为主)。

内存分析用于判断系统有无遇到内存瓶颈,是否需要通过增加内存等手段提高系统性能表现。

1、查看Memory\Available Mbytes指标

在对系统进行操作系统级别的内存分析时,首先需要通过该指标(Available Mbytes:Windows系统自带计数器的一个计数值)建立一个初步的印象,了解性能测试过程中

系统是否仍然有足够的内存可用。如果该指标比较小,系统可能存在内存不足方便的问题,这时需要继续依据具体问题进行下一步分析。

2、注意Pages/sec、Pages Read/sec和Page Faults/sec的值

操作系统经常会利用磁盘交换方式提高系统的可用内存量或内存使用效率。Windows和Unix操作系统都提供了类似的方法来支持磁盘交换计数,而这三个指标直接反应了操作系统

进行磁盘交换的频度。

如果Pages/sec的计数持续高于几百,很可能有内存方面的问题产生,但Pages/sec的值很大不一定表明内存有问题,而可能是运行使用内存映射文件的程序所致。

Page Faults/sec值表示每秒发生的页面失效次数,页面失效次数越多,说明操作系统向内存读取的次数越多。

Pages Read/sec的计数值阈值为5,如果计数值超过5,则可以判断存在内存方面的问题。

3、根据Physical Disk计数器的值分析性能瓶颈

对Physical Disk计数器的分析包括对Pages Read/sec和%DiskTime及Average Disk Queue Length的分析。如果Pages Read/sec的值很低,同时%DiskTime和

Average Disk Queue Length的值很高,则可能是磁盘瓶颈;但如果队列长度增加的同时Pages Read/sec并未降低,则是由于内存不足。

更详细的内容可阅读该链接:http://www.360doc.com/content/11/0822/11/7479922_142362096.shtml

二、处理器分析

处理器(CPU)也可能是系统的瓶颈,下面是针对处理器进行分析的步骤:

1、查看System\%Total Processor Time性能计数器的计数值

该计数值用于体现服务器整体的处理器利用率;对于多处理器系统而言,该计数值体现的是所有CPU的平均利用率。如果该数值持续超过90%,则说明整个系统面临着处理器方面

的瓶颈,需要通过增加处理器来提高性能。

注意事项:由于操作系统本身的特性,在某些多CPU系统中,该数据本身并不大,但如果CPU之间负载状况极不均衡,也应该视作系统产生了处理器方面的瓶颈。

2、查看每个CPU的Processor\%Processor Time、Processor\%User Time和Processor\%Privileged Time

Processor\%User Time是指系统非核心操作消耗的CPU时间;如果该值较大,可以考虑是否能通过算法优化等方法降低该值。

如果该服务器是数据库服务器,Processor\%User Time值较大的原因很可能是数据库的排序或者函数函数操作消耗了过多的CPU时间,此时可考虑对数据库系统进行优化。

3、研究分析系统处理器瓶颈

查看System\Processor Queue Length计数器的值;当该计数器的值大于CPU数量总数+1时,说明产生了处理器阻塞。在处理器的%Process Time值很高时一般都伴随

着处理器阻塞,但产生处理器阻塞时,Processor\%Process Time计数器的值并不一定很大,此时就需要查找处理器阻塞的原因。

%DPC Time的计数值越低越好。在多处理器系统中,如果该值大于50%并且Processor\%Processor Time值非常高,则考虑加一个网卡来提高性能。

三、磁盘I/O分析方法

磁盘I/O也是影响系统性能的一个关键因素。如果所分析的计数器指标来源于数据库服务器、文件服务器或流媒体服务器,磁盘I/O更容易成为瓶颈。

磁盘I/O的分析方法如下:

1、计算每个磁盘的I/O数

每个磁盘的I/O数可以用来与磁盘的I/O能力进行对比,如果经过计算得到的每个磁盘I/O数超过了磁盘标称的I/O能力,则说明确实存在磁盘的性能瓶颈。

下表给出了每个磁盘I/O的计算方法:

PS:各种不同的RAID方式,其每个磁盘I/O数的计算方法都不同。

2、与Processor\Privileged Time合并进行分析

如果在Physical Disk计数器中,只有%Disk Time值较大,其他值都比较适中,则硬盘可能会是瓶颈;若几个值都比较大,且数值持续超过60%,则可能是内存泄漏。

3、根据Disk sec/Transfer进行分析

一般而言,定义Transfer数值小于15位优秀,介于15~30之间为良好,30~60毫秒之间为可以接受,超过60毫秒则需要考虑更换硬盘或硬盘的RAIN方式。

四、进程分析方法

1、查看进程的%Processor Time值

每个进程的%Processor Time值反映出进程所消耗的处理器时间。将不同进程所消耗的处理器时间进行对比,可以容易的看出具体哪个进程在性能测试过程中消耗了

最多的处理器时间,从而可以据此针对应用进行优化。

2、查看每个进程产生的页面失效

可以用每个进程产生的页面失效和系统的页面失效来判断哪个进程产生了最多的页面失效;该进程要么是需要大量内存的进程,要么是非常活跃的进程,可对其重点分析。

进程产生的页面失效:可以通过Process\Page Failures/sec计数器获得;

系统的页面失效:可以通过Memory\Page Failures/sec计数器获得;

3、了解进程的Process\Private Bytes

Process\Private Bytes是指进程所分配的无法与其他进程共享的当前字节数量;其主要用来判断进程在性能测试过程中有无内存泄漏。

五、网络分析方法

随着应用对数据传输量的增长,网络有时也会成为系统性能的瓶颈;一般在企业中,网络一般都是由专门的人员进行管理的(俗称运维、网管)。

如果在测试过程中怀疑是网络原因造成的系统瓶颈,可以要求网络管理人员来协助进行网络方面的监视检测;其中Network Interface\Bytes Total/sec为比较重要的属性;

Network Interface\Bytes Total/sec:发送和接受字节的速率;可以通过该值判断网络连接速度是否是瓶颈,具体操作方法是:用该计数器的值与目前网络带宽进行比较。

由于篇幅问题,稍后会不断更新其他的影响系统应用的性能因素以及分析方法。。。

时间: 2024-11-09 03:04:57

性能测试(五)性能分析方法的相关文章

Android 性能优化 五 性能分析工具dumpsys的使用

Android提供的dumpsys工具可以用于查看感兴趣的系统服务信息与状态,手机连接电脑后可以直接命令行执行adb shell dumpsys 查看所有支持的Service但是这样输出的太多,可以通过dumpsys | grep "DUMP OF SERVICE" 仅显示主要的Service的信息 一.列出dumpsys所有支持命令 > adb shell $ dumpsys | grep "DUMP OF SERVICE" 以下是在我个人三星S3手机上的输

性能测试需求指标分析方法

六.设计测试模型 1.业务模型的设计 一个系统的业务模型是通过业务调研获得,业务模型的正确性反映在两个方面首先业务选择的正确性和业务比例的正确性. 首先业务选择,一个系统可能支持几百个业务活动(也有叫做交易)但是只有少数的业务活动非常频繁,占总业务量的80%以上,那么在性能测试时只需关心这些占了大部分业务量的少量业务上. 其次业务比例,如何精确统计业务的数量是关键问题,针对一个全新的系统可能要通过对使用系统的涉众进行调研,搞清楚他们群体数量,操作行为周期.在通过组合这些数据确定在常规业务日中各种

性能分析方法

1.内存分析方法 内存分析方法主要是用于判断系统有无遇到内存瓶颈,是否需要通过增加内存等手段提高系统性能表现.主要计数器包括Memory和Physical Disk类别的计数器 内存分析的主要步骤和方法如下: (1) 首先查看Memory\Available Mbytes指标 该值是用于描述系统可用内存的直接指标,在对系统进行操作系统级别的内存分析时,首先应通过该值建立一个初步的印象,了解性能系统测试过程中,系统是否仍然有足够的内存可用. 如果该指标的数据比较小,系统可能出现了内存方面的问题,此

Android APP性能分析方法及工具

近期读到<Speed up your app>一文.这是一篇关于Android APP性能分析.优化的文章.在这篇文章中,作者介绍他的APP分析优化规则.使用的工具和方法.我觉得值得大家借鉴.英文好的读者可读原文(链接:http://blog.udinic.com/2015/09/15/speed-up-your-app). 1.作者的规则 作者每次着手处理或寻找性能问题时,遵循下列规则: 时常检测 在更新APP前后,用测试工具软件多检测几次APP性能,可快速得到测试数据.这些数字是不会说谎的

php代码性能分析方法

1.用到的函数 microtime() ,函数返回当前 Unix 时间戳和微秒数,本函数以 "msec sec" 的格式返回一个字符串,其中 sec 是自 Unix 纪元(0:00:00 January 1, 1970 GMT)起到现在的秒数,msec 是微秒部分.字符串的两部分都是以秒为单位返回的 memory_get_usage() ,函数返回内存使用量,还可以有个参数,$real_usage,其值为布尔值.如果设置为 TRUE,获取系统分配的真实内存尺寸.如果未设置或者设置为 F

性能测试分析与性能调优诊断--史上最全的服务器性能分析监控调优篇

一个系统或者网站在功能开发完成后一般最终都需要部署到服务器上运行,那么服务器的性能监控和分析就显得非常重要了,选用什么配置的服务器.如何对服务器进行调优.如何从服务器监控中发现程序的性能问题. 如何判断服务器的瓶颈在哪里等 就成为了服务器性能监控和分析时重点需要去解决的问题了. 1     服务器的性能监控和分析 1.1      Linux服务器的性能指标监控和分析 1.1.1       通过vmstat深挖服务器的性能问题 1.1.2       如何通过mpstat 分析服务器的性能指标

玩转mongodb(五):mongodb 3.0+ 查询性能分析

mongodb性能分析方法:explain() 为了演示的效果,我们先来创建一个有200万个文档的记录.(我自己的电脑耗了15分钟左右插入完成.如果你想插更多的文档也没问题,只要有耐心等就可以了.) 1 for(var i=0;i<2000000;i++){ 2 db.person.insert({"name":"ryan"+i,"age":i}); 3 } MongoDB 3.0之后,explain的返回与使用方法与之前版本有了很大的变化

使用gprof来对程序的性能分析总结

综述 gprof用于分析函数调用耗时,可用之抓出最耗时的函数,以便优化程序. gcc链接时也一定要加-pg参数,以使程序运行结束后生成gmon.out文件,供gprof分析. gprof默认不支持多线程程序,默认不支持共享库程序. gcc -pg 编译程序 运行程序,程序退出时生成 gmon.out gprof ./prog gmon.out -b 查看输出 注意事项 程序如果不是从main return或exit()退出,则可能不生成gmon.out. 程序如果崩溃,可能不生成gmon.out

带你玩转Visual Studio——性能分析与优化

上一篇文章带你玩转Visual Studio--VC++的多线程开发讲了VC++中多线程的主要用法.多线程是提升性能和解决并发问题的有效途经.在商用程序的开发中,性能是一个重要的指标,程序的性能优化也是一个重要的工作. 找到性能瓶颈 二八法则适合很多事物:最重要的只占其中一小部分,约20%,其余80%的尽管是多数,却是次要的.在程序代码中也是一样,决定应用性能的就那20%的代码(甚至更少).因此优化实践中,我们将精力集中优化那20%最耗时的代码上,这那20%的代码就是程序的性能瓶颈,主要针对这部