性能瓶颈分析方法

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

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

 

1、内存分析算法

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

内存分析用于判断系统有无遇到内存瓶颈,是否须要经过增长内存等手段提升系统性能表现。服务器

一、查看Memory\Available Mbytes指标网络

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

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

二、注意Pages/sec、Pages Read/sec和Page Faults/sec的值性能

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

进行磁盘交换的频度。

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

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

Pages Read/sec的计数值阈值为5,若是计数值超过5,则能够判断存在内存方面的问题。

三、根据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

 

2、处理器分析

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

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

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

的瓶颈,须要经过增长处理器来提升性能。

注意事项:因为操做系统自己的特性,在某些多CPU系统中,该数据自己并不大,但若是CPU之间负载情况极不均衡,也应该视做系统产生了处理器方面的瓶颈。

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

Processor\%User Time是指系统非核心操做消耗的CPU时间;若是该值较大,能够考虑是否能经过算法优化等方法下降该值。

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

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

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

着处理器阻塞,但产生处理器阻塞时,Processor\%Process Time计数器的值并不必定很大,此时就须要查找处理器阻塞的缘由。

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

 

3、磁盘I/O分析方法

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

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

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

每一个磁盘的I/O数能够用来与磁盘的I/O能力进行对比,若是通过计算获得的每一个磁盘I/O数超过了磁盘标称的I/O能力,则说明确实存在磁盘的性能瓶颈。

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

 

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

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

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

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

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

 

4、进程分析方法

一、查看进程的%Processor Time值

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

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

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

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

进程产生的页面失效:能够经过Process\Page Failures/sec计数器得到;

系统的页面失效:能够经过Memory\Page Failures/sec计数器得到;

三、了解进程的Process\Private Bytes

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

 

5、网络分析方法

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

若是在测试过程当中怀疑是网络缘由形成的系统瓶颈,能够要求网络管理人员来协助进行网络方面的监视检测;其中Network Interface\Bytes Total/sec为比较重要的属性;

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

 

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