性能测试常见的指标
性能测试最基本要考虑以下⼏点:
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 Queues\Queue 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 Bytes、Process\working set 和Process\Handle Count,如果怀疑是内存的进程Process\Private Bytes\Process\Working set 和Process\Handle Count,如果怀疑是内核模式进程导致了泄露,则还应该监视Memory\pool Nonpaged Bytes、Memory\pool Nonpaged Allocs和Process(process_name)\Pool 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的数值。
周密rapper
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、操作系统上的性能瓶颈:
⼀般指的是Windows、linux等操作系统,如出现物理内存不⾜时,或虚拟内存设置不合理(虚拟内存设置不合理,会导致虚拟内存的交换率⼤⼤降低,从⽽导致⾏为的响应时间⼤⼤增加,可以认为在操作系统上出现了性能瓶颈)。
5、⽹络设备上的性能瓶颈:
⼀般指的是防⽕墙、动态负载均衡器、交换机等设备。
性能瓶颈原因定位⼗分复杂,需抽丝剥茧逐⼀排除,以上信息仅供参考。