性能测试常见的指标(一)

性能测试最基本要考虑以下几点:

1、时间特性,主要指的是软件产品的事物响应时间(用户发出请求到收到应答的这段时间)

2、资源利用率,包括:cpu、内存、网络、硬盘、虚拟内存(如Java虚拟机)

3、服务器可靠性,指服务器能在相对高负载情况下持续的运行

4、可配置优化性,指服务器配置优化、业务逻辑优化、代码优化等

 

性能指标:

1、响应时间

响应时间是最能反应服务器性能的指标之一,也是用户最关心的业务体验。比如登录某个商城网站时,只消耗1s钟。在进行性能测试时,是通过对事务响应时间(Transaction Response Time)来分析服务器的响应速度。

 

(一般响应时间在3s内,用户会感觉比较满意。在3s~8s之间用户勉强能接受,大于8s用户就可能无法接受,从而刷新页面或者离开,仅供参考)

2、吞吐量

吞吐量表示单位时间内能够完成的事务数量,因此也被称为每秒事务数(Transaction Per Second),计算方式是完成的事务数除以时间。

3、服务器资源占用

服务器资源占是指在负载情况下,系统的资源利用率。资源占用越低,说明系统越优秀。例如,cpu的占用率、内存使用率、查询Cache命令率、磁盘I/O读写速率等。

 

CPU常用计数器:

计数器

计数器分析

%Processor Time

如果该值持续超过95%,表明瓶颈是cpu

Processor Queue Length

指待处理队列中的线程数,如果在处理器队列中总是有两个以上的线程则通常表示处理器堵塞,处理器瓶颈会导致该值持续大于2。此外,跟踪计算机的服务器工作队列将显示当前长度的Server Work QueuesQueue Length,队列长度持续大于4则表示可能出现处理器拥塞。

%User Time

表示消耗CPU的数据库操作,如排序、执行aggregate functions等。如果该值很高,可考虑增加索引,尽量使用简单的表连接、水平分割大表格等方法来降低该值。

%Privileged Time

此计数器是特定时间的值,指(CPU内核时间)在特权模式下处理线程执行代码所花时间的百分比,如果该参数的值和“Physical Disk”参数值一直很高,则表明I/O有问题。可考虑更换磁盘系统。

%DPC Time

网卡CPU的占用率,该值越低越好。如果这个值大于50%并且Processor%Processor Time非常高,说明提供的网络已经受CPU影响无法饱和工作

 

 

 

内存常用计数器:

计数器

计数器分析

Available Mbytes

可用物理内存数。如果Available Mbytes的值很小,则说明计算机上总的内存可能不足,或某程序没有释放内存。

Page/sec

表明由于硬件页面错误而从磁盘取出的页面数,或由于页面错误而从磁盘取出的页面数,或由于页面错误而写入磁盘以释放内存空间的页面数。一般如果Page/sec持续高于几百,那么应该进一步研究交换活动,有可能需要增加内存,以减少换页的需求。Page/sec的值很大,不一定表明内存有问题,而可能是运行使用内存映射文件的程序所致。

Page read/sec

指页的硬故障,是Page/sec的子集,为了解析对内存的引用,必须读取页文件的次数。该数值越低越好,大于5时表示磁盘读而不是缓冲读。

Page Faults/sec

指每秒钟软件页面失效的数目,而Page/sec只表明数据不能在指定内存中立即使用。

Cache Bytes

文件系统缓存(File System Cache),默认情况下为50%的可用物理内存,如果怀疑有内存泄露,请监视Memory Available BytesProcessworking set ProcessHandle Count,如果怀疑是内存的进程ProcessPrivate BytesProcessWorking set ProcessHandle Count,如果怀疑是内核模式进程导致了泄露,则还应该监视Memorypool Nonpaged BytesMemorypool Nonpaged AllocsProcessprocess_namePool Nonpaged Bytes

Pages/sec

每秒钟检索的页数,该数字应少于每秒1

Committed Bytes

以字节表示的确认虚拟内存,确认内存磁盘页面文件上保留了空间的物理内存。每个物理磁盘上可以有一个或一个以上的页面文件。这个计数器只显示上一回观察到的值;它不是一个平均值。其实就是指有多少虚拟内存正在被使用,虚拟内存是占用硬盘空间的内存,和物理内存无关。

 

 

物理磁盘常用计数器:

计数器

计数器分析

%Disk Time

指所选磁盘驱动器为读或写入请求提供服务所用时间的百分比。如果三个计数器都比较大,那么磁盘不是瓶颈。如果只有%Disk Time比较大,另外两个都比较适中,则硬盘可能会是瓶颈。若数值持续超过80%,则可能的内存泄露。

Avg.Disk Queue Length

它指的是当前磁盘的队列长度。通俗点来解释就是:计数器反映的磁盘完成请求所用的时间,较高的值表明磁盘控制器由于失败而不断重试该磁盘。这些故障会增加平均磁盘传送时间。

Average Disk Read /

Write Queue Length

指读取(写入)请求(队列)的平均数

Disk Reads(Writes)/sec

物理磁盘上每秒磁盘读/写的次数,两者相加,应小于磁盘设备最大容量

Average Disk sec/Read

指以秒计算的在此盘上读取数据所需的平均时间

Average Disk sec/Transfer

指以秒计算的在此盘上写入数据所需的平均时间。一般来说,该值小于15ms最佳,15~30ms为良好,30~60ms为可以接受,超过60ms则需要考虑更换磁盘或磁盘的RAID方式了

Bytes Total/sec

发送和接收字节的速率,包括帧字符在内。判断网络连接速度是否是瓶颈,可以用该计数器的值和目前网络的带宽进行比较。

 

 

线程常用计数器:

计数器

计数器分析

Context Switch/sec

如果决定要增加线程字节池的大小,应该同时监视实例化inetinfo dllhost 进程这两个计数器。增加线程可能会增加上下文切换次数,这样性能不会上升,反而会下降。如果多个实例的上、下文切换值非常高,就应该减小线程字节池。

 

进程常用计数器:

计数器

计数器分析

Process/ %Processor Time

被处理器消耗的处理器时间数量。如果服务器专用于SQL Server,则可接受的最大上限是80%~85%

Page Faults/sec

将进程产生的页故障与系统产生的相比较,以判断这个进程对系统页故障产生的影响

Working set

处理线程最近使用的内存页,反映了每个进程使用的内存的数量,如果服务器有足够的空闲内存,页就会被留在内存中,当自由内存少于一个特定的阈值时,页就会被消除内存。

Process/Private Bytes

指进程所分配的无法与其他进程共享的当前字节数量,该计数器主要用来判断进程在性能测试过程中有无内存泄露。我们可以重点监控inetinfo进程的Private Bytes,如果在性能测试过程中,该进程Private Bytes计数器的值不断增加,或是性能测试停止后一段时间,该进程的Private Bytes仍然持续较高水平,则说明应用存在内存泄露。

 

服务缓冲常用计数器:

计数器

计数器分析

File Cache Hits

文件缓存命中的具体值

File Cache Hits %

全部缓存请求中,缓存命中次数所占的比例,反映了IIS的文件缓存设置的工作情况。对于一个大部分是静态网组成的网站,该值应该保持在80%左右。

File Cache Flushes

自服务器启动之后文件缓存刷新的次数,如果刷新太慢,会浪费内存;如果刷新太快,缓存中的对象就会被频繁的丢弃再重新生成,起不到缓存的作用,通过将File Cache Hits除以File Cache Flushes 可以得出缓存命中率对缓存清空率的比率。通过观察这两个值,可以得到一个适当的刷新值

Connection Refused

该数值越低越好,高数值表明网络适配器或处理器存在瓶颈。

 

 

网络常用计数器:

计数器

计数器分析

Bytes Total/sec

发送和接收字节的速度,包括帧字符在内,判断网络连接速度是否为瓶颈,可以用该计数器的值和目前网络的带宽相除,结果应该小于50%

 

Apache常用计数器:

计数器

计数器分析

Apache CPU Usage apache

服务器CPU的占用率

Kbytes Sent/sec

服务器每秒发送的字节数

Hits/sec

Apache 服务每秒的点击率

#Busy Workers

Apache 服务占用率

#Idle Workers

Apache 服务空闲率

 

Mysql 常用计数器:

计数器

计数器分析

Threads_connected

表示当前有多少个客户连接该Mysql服务器,连接数是否过多,网络是否存在问题,它是动态变化的。当Threads_connected ==max_connections时,数据库系统就不能提供更多的连接数了,这时,如果程序还想新建连接线程,数据库系统就会拒绝,如果程序没做太多的错误处理,就会出现报错信息。

Threads_running

如果数据库超负荷了,将会得到一个正在(查询的语句持续)增长的数值。这个值也可以小于预先设定的值。这个值在很短的时间内超过限定值是没有问题的,如果超过预设值时且5s内没有回落,就要同时监视其他的一些值。

Aborted_clients

客户端被异常中断的数值(因为连接到Mysql服务器的客户端没有正常地断开或关闭)。对于一些应用程序是没有影响的,但对于另一些应用程序可能要跟踪该值,因此异常中断连接可能表明一些应用程序有问题

Questions

每秒获得的查询数量。也可以是全部查询的数量,可以根据输入不同的命令得到你想要的不同的值。

Handler_*

如果想监视底层(low-level)数据库负载,这些值是值得去跟踪的。如果Handler_read_rnd_next值与正常值相差悬殊,可能是优化或索引出问题了,Handler_rollback表明事务被回滚的查询数量。

Opened_tables

指表缓存没有命中的数量。如果该值很大,就需要增加table_cache的数值。

Select_full_join

没有主键(key)联合(join)的执行,该值可能是零。这是捕获开发错误的好方法,因为这样的查询有可能降低系统的性能。

Select_scan

执行全表搜索查询的数量,如果发现该值持续增长,说明需要优化,缺乏必要的索引或其他问题。

Select_queries

超过该值(--long-query-time)的查询数量,或没有使用索引查询数量。对于全部查询会有小的冲突。如果该值增长,则表明系统有性能问题。

Threads_created

该值一般较低。较高的值可能意味着需要增加thread_cache的数值,或遇到了持续增加的连接,表明存在潜在的问题。

Pending normal aio reads

该值是innodb io 请求查询的大小(size)。如果该值超出了10~20的范围,可能存在一些瓶颈。

 

 

总结:

1、硬件上的性能瓶颈:

一般指的是CPU、内存、磁盘读写等的瓶颈,为服务器硬件瓶颈。

2、应用软件上的性能瓶颈:

一般指的是服务器操作系统瓶颈(参数配置)、数据库瓶颈(参数配置)、web服务器瓶颈(参数配置)、中间件瓶颈(参数配置)等

3、应用程序上的性能瓶颈:

一般指的是开发人员,开发出来的应用程序(如sql语句、数据库设计、业务逻辑、算法等)。

4、操作系统上的性能瓶颈:

一般指的是Windowslinux等操作系统,如出现物理内存不足时,或虚拟内存设置不合理(虚拟内存设置不合理,会导致虚拟内存的交换率大大降低,从而导致行为的响应时间大大增加,可以认为在操作系统上出现了性能瓶颈)。

5、网络设备上的性能瓶颈:

一般指的是防火墙、动态负载均衡器、交换机等设备。

性能瓶颈原因定位十分复杂,需抽丝剥茧逐一排除,以上信息仅供参考。

原文地址:https://www.cnblogs.com/JcHome/p/10212051.html