性能测试中服务器关键性能指标浅析
作者:网络转载 发布时间:[ 2016/8/12 14:28:48 ] 推荐标签:性能测试 服务器
在对互联网服务进行服务端性能测试时,主要关注两方面的性能指标:
业务指标:如吞吐量(QPS、TPS)、响应时间(RT)、并发数、业务成功率等
资源指标:如CPU、内存、Disk I/O、Network I/O等资源的消耗情况
本文主要介绍一些广泛适用的、基本的资源指标以及这些指标在Linux服务器的获取方式。
一. CPU
关于CPU资源,有三个重要概念是我们需要关注的:使用率、运行队列和上下文切换,这里借助一张描述进程状态的图来进行简要说明:
Process state -via wikipedia
Running:正在运行的进程
Waiting:已准备绪,等待运行的进程
Blocked:因为等待某些事件完成而阻塞的进程,通常是在等待I/O,如Disk I/O,Network I/O等。
这里的Running和Waiting共同构成Linux进程状态中的可运行状态(task_running),而Blocked状态可以对应Linux进程状态中的不可中断睡眠状态(task_uninterruptible)
在Linux可以使用vmstat来获取这些数据:
[hbase@ecs-097 ~]$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
6 0 0 4591436 176804 1185380 0 0 0 0 7915 10357 83 5 12 0 0
CPU使用率(CPU Utilization Percentages):有进程处于Running状态的时间/总时间。在vmstat主要通过us、sys和id三列数据来体现:
· us:用户占用CPU的百分比
· sy:系统(内核和中断)占用CPU的百分比
· id:CPU空闲的百分比
性能测试指标中,CPU使用率通常用us + sy来计算,其可接受上限通常在70%~80%。另外需要注意的是,在测试过程中,如果sy的值长期大于25%,应该关注in(系统中断)和cs(上下文切换)的数值,并根据被测应用的实现逻辑来分析是否合理。
运行队列进程数(Processes on run queue):Running状态 + Waiting状态的进程数,展示了正在运行和等待CPU资源的任务数,可以看作CPU的工作清单,是判断CPU资源是否成为瓶颈的重要依据。vmstat通过r的值来体现:
· r: 可运行进程数,包括正在运行(Running)和已绪等待运行(Waiting)的。
如果r的值等于系统CPU总核数,则说明CPU已经满负荷。在负载测试中,其可接受上限通常不超过CPU核数的2倍。
上下文切换(Context Switches):简单来说,context指CPU寄存器和程序计数器在某时间点的内容,(进程)上下文切换即kernel挂起一个进程并将该进程此时的状态存储到内存,然后从内存中恢复下一个要执行的进程原来的状态到寄存器,从其上次暂停的执行代码开始继续执行至频繁的上下文切换将导致sy值增长。vmstat通过cs的值来体现:
· cs:每秒上下文切换次数。
另外还有一个指标用来作为系统在一段时间内的负载情况的参考:
平均负载Load Average:在UNIX系统中,Load是对系统工作量的度量。Load取值有两种情况,多数UNIX系统取运行队列的值(vmstat输出的r),而Linux系统取运行队列的值 + 处于task_uninterruptible状态的进程数(vmstat输出的b),所以会出现CPU使用率不高但Load值很高的情况。Load Average是在一段时间内的平均负载,系统工具top、uptime等提供1分钟、5分钟和15分钟的平均负载值。
[hbase@ecs-097 ~]$ top
top - 19:23:28 up 18:05, 3 users, load average: 0.80, 0.60, 0.53
上面示例中的0.80即是1分钟内的Load average,以此类推。
当我们需要了解当前系统负载情况时,可以先查看Load average的值,如果系统持续处于高负载(如15分钟平均负载大于CPU总核数的两倍),则查看vmstat的r值和b值来确认是CPU负荷重还是等待I/O的进程太多。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11