走在性能测试的路上2--性能指标

性能测试分几个阶段:

        1.需求整理 -> 2.场景构造 -> 3.脚本编写 -> 4.系统监控 -> 5.数据准备 -> 6.执行测试 -> 7.结果分析

        本文主要阐述整个性能测试过程中很重要的性能指标。毕竟也只有数据才能反映一个系统的好与坏,所以我们所做的一起都是为了得到被测试系统的性能数据指标,有了这些数据我们才能进行结果的分析,才能看到我们工作的成效,才能获得那一点点的成就感。

一)性能测试最基本要考虑如下特性:

1、时间,主要指用户完成一个操作所需要的时间;

2、资源利用率,主要指服务器的系统资源,如内存、CPU、网络、磁盘、JVM,但执行机的资源使用情况也需要观察;

3、可靠性,主要指高并发持续加压的情况下服务器是否能胜任,比如春晚抢红包;

4、可配置优化性,只要指得到性能数据并分析后对系统配置优化、代码优化、逻辑优化等。

二)性能指标

1.响应时间-Transaction Response Time

响应时间是反应服务器性能的重要指标之一,也是和用户体验好坏强相关的指标。一般一个web系统一个事务的响应时间在3s内就会觉得系统还不错,3s到5s大部分用户还可以接受,5s到8s可能还有一小部分人在等待,超过8s可能有直接砸屏幕的冲动,再加上网络延迟,真的要爆炸,所以响应时间很重要。

2.吞吐量(QPS)/每秒事务数 -- Transaction Per Second(TPS)

该指标表示每秒钟完成的事务数,当然一般都是统计成功事务数的TPS。公式:完成事务数 ÷ 所用时间

3.并发用户数

该指标其实不太准确,因为系统到底有多少人用是不能确定的。当然在允许的情况下是希望它越大越好,越大表示系统能够同时承载的正常使用系统功能的用户的数量也越大。

4.测试机系统资源使用情况

CPU、内存、磁盘等,如果测试机资源达到瓶颈,那么有可能达不到想要的服务器压力,此时需要考虑多台执行机进行加压。

5.服务器资源使用情况

同样的系统资源CPU、内存、磁盘、网络、JVM,什么不够加什么进行配置优化。

 

☆ 前三项有个简单的关系即:QPS(TPS)= 并发数/平均响应时间

 

三)系统资源的一些常用计数器

1.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影响无法饱和工作

 

2.内存常用计数器:

计数器

计数器分析

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

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

3.物理磁盘常用计数器:

计数器

计数器分析

%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

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

4.网络常用计数器:

计数器

计数器分析

Bytes Total/sec

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

5.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的范围,可能存在一些瓶颈。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值