前言

1、内存分析

内存的使用情况是系统性能中重要的因素之一,频繁的页交换及内存泄露都会影响到系统的性能(这里主要以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并未降低,则是由于内存不足。

2、处理器分析

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

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

该计数值用于体现服务器整体的处理器利用率;对于多处理器系统而言,该计数值体现的是所有CPU的平均利用率。

如果该数值持续超过90%,则说明整个系统面临着处理器方面的瓶颈,需要通过增加处理器来提高性能。

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

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

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

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

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

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

3、磁盘I/O分析方法

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

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

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

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

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

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

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

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

4、进程分析方法

1)查看进程的%Processor Time值

每个进程的%Processor Time值反映出进程所消耗的处理器时间。

将不同进程所消耗的处理器时间进行对比,可以容易的看出具体哪个进程在性能测试过程中消耗了最多的处理器时间,从而可以据此针对应用进行优化。

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

可以用每个进程产生的页面失效和系统的页面失效来判断哪个进程产生了最多的页面失效;

该进程要么是需要大量内存的进程,要么是非常活跃的进程,可对其重点分析。

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

3)了解进程的Process\Private Bytes

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

5、网络分析方法

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

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

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

完整版!企业级性能测试实战,速通Jmeter性能测试到分布式集群压测教程

下面是我整理的2025年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

人生没有白走的路,每一步都在为未来铺路。当你觉得疲惫时,请记住:钻石经过打磨才能闪耀,钢铁经过锤炼才更坚韧。那些看似艰难的挑战,终将成为你蜕变的契机。坚持住,胜利就在转角处!

梦想不会逃跑,逃跑的往往是自己的决心。每一个伟大的成就,都始于一个勇敢的开始。别等待完美时机,此刻就是最好的起点。你的坚持,终将让平凡的日子绽放非凡的光芒!

更多推荐