性能测试中关注的指标
性能测试中我们会关注很多的性能指标,会通过观测的性能指标来决定性能测试是否继续执行、性能测试是否通过等等内容,但是每次说到要监控什么指标的时候,往往就纠结在服务器的CPU利用率、可用内存数、磁盘IO、网络吞吐等,这些都是ISO25010定义的资源特性中给出的例子,其实对于一次有价值的性能测试,观测的指标应该远远多于这些指标项。性能测试中需要关注的指标有系统层指标、中间件层指标、应用层指标、业务指标、发压机指标,那么具体如下。
系统层的指标
CPU的指标
- CPU利用率
- 定义:单位时间内CPU使用情况的统计,表示CPU使用的百分比。
- 计算方法:(1-CPU空闲时间/CPU总时间)*100%
- 单位:百分比(%)。
- 影响:高利用率可能表示CPU瓶颈,低利用率则表示CPU空闲。
- 异常举例:CPU利用率长期接近100%可能导致系统响应变慢。例如,在高并发情况下,CPU利用率高导致处理请求的时间变长。
用户CPU时间(us)
- 定义:CPU在用户模式下花费的CPU时间。
- 计算方法:(用户模式下的CPU时间/总CPU时间)*100%。
- 单位:百分比(%)。
- 影响:高用户态时间表示用户应用程序占用了大量CPU资源。
- 异常举例:用户态时间高可能是由于应用程序的计算密集型任务导致的。例如,一个数据处理应用程序在进行大量计算时。
系统CPU时间(sy)
- 定义:CPU在系统模式下花费的时间。
- 计算方法:(系统模式下的CPU时间/总CPU时间)*100%。
- 单位:百分比(%)。
- 影响:高系统态时间表示内核操作占用了大量CPU资源。
- 异常举例:系统态时间高可能是由于频繁的系统调用或I/O操作。例如,频繁的文件读写操作导致系统态时间增加。
空闲时间:idle,
- 定义:代表了空闲的CPU时间,CPU处于空闲状态的时间,即没有执行任何任务的时间。
- 计算方法:(CPU空闲时间/总CPU时间)*100%
- 单位:百分比(%)
- 反应现象:操作系统上没有什么太占用CPU的程序在运行
- 异常举例:暂无
内存指标
内存使用率
- 定义:已使用内存占总内存的百分比。也有用可用内存数这个指标的,这里指标和内存使用率有一定的相关性。可用内存数一般是通过总内存数减去已用内存数计算的,常以M为单位。
- 计算方法:(已使用内存/总内存)*100%。
- 单位:百分比(%)。
- 影响:高内存使用率可能导致内存不足,引发交换(swap)操作。
- 异常举例:内存使用率过高可能导致系统变慢。例如,大量应用程序同时运行占用了大量内存。
- 虚拟内存大小
- 定义:虚拟内存就是为了满足物理内存的不足而提出的策略,它是利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为交换空间(Swap Space)
- 计算方法:虚拟内存总量。
- 单位:MB或GB。
- 影响:高虚拟内存使用表示实际内存不足。
- 异常举例:虚拟内存过大可能导致交换分区频繁使用,系统变慢。例如,内存不足时系统频繁进行内存交换。
- 交换空间(swap)
- 定义:用于虚拟内存的交换空间使用情况。比较常规关注swap in(si,从交换空间读取的页数)、swap out(so,写入交换空间的页数)。高si表示频繁从磁盘读取数据,高so表示频繁将数据写入磁盘。可能导致I/O瓶颈。例如,内存不足时频繁从交换分区读写数据。
- 计算方法:(交换空间已用量/总交换空间)*100%。
- 单位:MB或GB。
- 影响:频繁使用交换空间表示物理内存不足。
- 异常举例:交换内存使用高可能导致系统性能下降。例如,物理内存耗尽,导致频繁的页面交换。
磁盘指标
- 磁盘使用率
- 定义:磁盘使用的百分比。
- 计算方法:(已用磁盘空间/总磁盘空间)*100%。
- 单位:百分比(%)。
- 影响:高使用率表示磁盘空间不足。
- 异常举例:磁盘使用率过高可能导致无法写入新数据。例如,日志文件占满磁盘空间。
- 磁盘I/O
- 定义:磁盘读写操作频率。
- 计算方法:读写操作次数/时间。
- 单位:次/秒。
- 影响:高I/O频率表示磁盘操作频繁。
- 异常举例:磁盘I/O频繁可能导致I/O瓶颈。例如,大量文件读写操作导致磁盘负载过高。
- 磁盘吞吐量
- 定义:磁盘读写数据的速度。
- 计算方法:读写数据量/时间。
- 单位:MB/s或GB/s。
- 影响:高吞吐量表示数据读写速度快。
- 异常举例:吞吐量低可能导致数据读写延迟。例如,磁盘性能不佳导致数据读写速度慢。
- 磁盘I/O延迟
- 定义:磁盘读写操作的延迟时间。
- 计算方法:总延迟时间/读写操作次数。
- 单位:毫秒(ms)。
- 影响:高延迟表示磁盘响应慢。
- 异常举例:I/O延迟高可能导致应用程序响应变慢。例如,磁盘碎片化导致数据读写延迟。
网络指标
带宽
- 定义:数据传输的网络带宽,可划分成内网带宽、外网带宽、专线带宽
- 计算方法:传输数据量/时间。
- 单位:Mbps或Gbps。
- 影响:高带宽表示数据在对应带宽的网络上传输速度快。
- 异常举例:带宽不足可能导致通信延迟。例如,大量内部数据传输占用带宽导致其他通信受阻。
延迟
- 定义:数据从源到目的地的传输时间。
- 计算方法:数据包到达时间 - 发送时间。
- 单位:毫秒(ms)。
- 影响:高延迟表示网络传输慢。
- 异常举例:网络延迟高可能导致数据传输变慢。例如,网络拥堵导致数据包传输延迟。
- 备注:延迟如果出现问题,那么需要排查网络传输过程中的网元设备的发送时延、传播时延、处理时延、排队时延等等。
- 抖动
- 定义:数据包传输时间的变动。
- 计算方法:最大延迟 - 最小延迟。
- 单位:毫秒(ms)。
- 影响:高抖动表示网络不稳定。
- 异常举例:网络抖动大可能导致实时通信质量下降。例如,视频会议时网络抖动导致画面卡顿。
- 丢包率
- 定义:传输过程中丢失的数据包数量比率。
- 计算方法:丢失的数据包数/总数据包数。
- 单位:百分比(%)。
- 影响:高丢包率表示网络可靠性差。
- 异常举例:丢包率高可能导致数据传输失败。例如,网络不稳定导致文件传输中断。
- 网络吞吐量
- 定义:单位时间内通过网络传输的数据量。
- 计算方法:传输数据量/时间。
- 单位:Mbps或Gbps。
- 影响:高吞吐量表示网络传输能力强。
- 异常举例:吞吐量低可能导致数据传输速度慢。例如,带宽不足或网络拥堵导致传输速度下降。
中间件层指标
网关
每秒处理请求数
- 定义:网关每秒处理的请求数量。
- 计算方法:总请求数/总时间。
- 单位:次/秒。
- 影响:高处理请求数表示网关处理能力强。
- 异常举例:处理请求数低可能表示网关性能瓶颈。例如,网关负载过高导致处理能力下降。
数据库
SQL耗时
- 定义:SQL查询执行时间。
- 计算方法:总查询时间/查询次数。
- 单位:毫秒(ms)。
- 影响:高耗时表示查询效率低。
- 异常举例:SQL耗时长可能导致数据库响应变慢。例如,复杂查询或缺乏索引导致查询时间长。
- 吞吐量(IO)
- 定义:数据库在单位时间内读写数据的总量。
- 计算方法:读写数据量/时间。
- 单位:MB/s或GB/s。
- 影响:高吞吐量表示数据读写效率高。
- 异常举例:吞吐量低可能导致数据处理变慢。例如,数据库I/O瓶颈导致读写速度慢。
- 连接数
- 定义:当前数据库的连接数量。
- 计算方法:活跃连接数。
- 单位:个。
- 影响:高连接数表示数据库负载高。
- 异常举例:连接数过多可能导致数据库性能下降。例如,大量并发连接导致连接池耗尽。
- 缓冲区命中率
- 定义:数据查询命中缓冲区的比例。
- 计算方法:命中缓冲区的查询数/总查询数。
- 单位:百分比(%)。
- 影响:高命中率表示查询效率高。
- 异常举例:命中率低可能导致频繁磁盘I/O。例如,缓冲区大小不足导致命中率下降。
除去上述内容,数据库的锁性能也是需要关注的,但是这部分相对复杂,无法简单通过如上方式揭示清楚。
缓存
- 缓存命中率
- 定义:缓存命中请求的比例。
- 计算方法:命中缓存的请求数/总请求数。
- 单位:百分比(%)。
- 影响:高命中率表示缓存效率高。
- 异常举例:缓存命中率低可能导致性能下降。例如,缓存设置不合理导致大量请求未命中。
- 使用内存数
- 定义:缓存使用的内存量。
- 计算方法:缓存使用内存的数量。
- 单位:MB或GB。
- 影响:高使用内存表示缓存数据多。
- 异常举例:内存使用过高可能导致系统内存不足。例如,大量数据缓存导致内存耗尽。
- 连接数
- 定义:当前缓存的连接数量。
- 计算方法:活跃连接数。
- 单位:个。
- 影响:高连接数表示缓存负载高。
- 异常举例:连接数过多可能导致缓存性能下降。例如,大量并发连接导致缓存服务器压力过大。
- Key值总数
- 定义:缓存中存储的key数量。
- 计算方法:总key数。
- 单位:个。
- 影响:高键值总数表示缓存数据量大。
- 异常举例:键值总数过多可能导致缓存管理困难。例如,缓存中存储大量不常用数据导致性能下降。
MQ
- 消息延迟
- 定义:消息从发送到接收的时间。
- 计算方法:消费者接受到消息并开始处理的时间-生产者发送消息的时间
- 单位:毫秒(ms)。
- 影响:高延迟表示消息处理速度慢。
- 异常举例:消息延迟高可能导致系统响应变慢。例如,消息队列拥堵导致消息处理延迟。
- 堆积量
- 定义:消息队列中未处理的消息数量。
- 计算方法:未处理消息数。
- 单位:个。
- 影响:高堆积量表示消息处理能力不足。
- 异常举例:堆积量过多可能导致消息处理延迟。例如,消费端处理能力不足导致消息堆积。
分布式存储系统
- 空间利用率
- 定义:空间利用率指的是在分布式存储系统中,已使用存储空间与总存储空间的比例。它通常用来衡量存储资源是否得到了充分利用,以及是否需要进行优化或扩展。
- 计算方法:已使用的存储空间/总存储空间*100%。
- 单位:%
- 影响:高空间利用率可能意味着存储资源得到了有效利用,但也可能接近容量极限,需要考虑扩展或优化存储策略。
- 异常举例:假设一个分布式存储系统有1PB的总存储容量,已使用800TB。那么空间利用率为80%,这个利用率表明存储资源已经使用了大部分,可能需要考虑数据管理策略(数据归档、数据压缩、去重技术、存储分层等)或扩展存储容量。
- 读写速度
- 定义:存储系统的读写数据速度。
- 计算方法:读写数据量/时间。
- 单位:MB/s或GB/s。
- 影响:高读写速度表示存储系统性能好。
- 异常举例:读写速度低可能导致数据处理变慢。例如,存储设备性能不足导致读写速度慢。
应用层指标
响应时间
- 平均响应时间
- 定义:所有请求的平均响应时间。
- 计算方法:总响应时间/请求数。
- 单位:毫秒(ms)。
- 影响:平均响应时间高表示系统处理速度慢。
- 异常举例:平均响应时间长可能导致用户体验差。例如,服务器处理能力不足导致响应变慢。
- 分位数响应时间(TP90、TP95、TP99)
- 定义:TP90是90%请求的响应时间低于此值。TP95是95%请求的响应时间低于此值。TP99是99%请求的响应时间低于此值
- 计算方法:升序排序后取TP90是第90%的响应时间的数值,TP95是第95%的响应时间的数值,TP99是第99%的响应时间的数值
- 单位:毫秒(ms)。
- 影响:对应分位响应时间高表示大部分请求处理速度慢。
- 异常举例:分位响应时间长可能导致大多数用户体验差。例如,高并发下服务器负载过高。
- 最小响应时间
- 定义:所有请求中最短的响应时间。
- 计算方法:最短的响应时间。
- 单位:毫秒(ms)。
- 影响:最小响应时间短表示有部分请求处理速度快。
- 异常举例:最小响应时间长可能表示系统有时响应慢。例如,服务器负载均衡不均导致部分请求处理快。
吞吐量
- TPS
- 定义:每秒处理的事务数量,但是一个事务的大小却没有一个统一的定义,因此要使用TPS,最好内部定义好事务。
- 计算方法:总事务数/总时间。
- 单位:TPS。
- 影响:高TPS表示系统处理能力强。
- 异常举例:TPS低可能表示系统处理能力不足。例如,服务器性能瓶颈导致事务处理速度慢。
QPS
- 定义:每秒处理的查询数量。
- 计算方法:总查询数/总时间。
- 单位:QPS。
- 影响:高QPS表示系统处理查询能力强。
- 异常举例:QPS低可能表示系统查询处理能力不足。例如,数据库性能瓶颈导致查询处理速度慢。
应用资源
并发数
- 定义:在同一时刻系统处理的请求数量。通过时间窗口内的请求数除以时间窗口的长度,例如每秒并发数
- 计算方法:通过日志或监控工具统计在时间窗口内处理的请求数,除以时间窗口的长度,例如每秒并发数。
- 单位:个
- 影响:它是衡量系统负载和性能的重要指标之一。通常通过监控工具或日志分析获取。
- 异常举例:假设在某个时间点,并发数突然飙升至平时的两倍,这可能意味着某个外部系统突然发起大量请求或者存在异常流量。如果未及时处理,可能导致服务器过载甚至宕机。解决方案包括增加服务器节点、优化负载均衡策略或对外部系统进行流量限制。并发数过高可能导致系统过载,响应时间延长。
- 连接数
- 定义:连接数指当前系统中正在建立或已经建立的连接总数。
- 计算方法:通过应用服务器的管理控制台或监控工具获取。
- 单位:个
- 影响:直接反映应用服务中间件的资源占用情况。
- 异常举例:在高并发场景下,如果连接数持续升高但处理速度未见显著提升,可能是未被及时释放。此时需要检查代码逻辑,确保所有连接均在使用后正确关闭,避免资源浪费。连接数达到上限可能导致新连接无法建立,影响服务可用性。
线程池
- 活动线程数
- 定义:正在处理任务的线程数量。
- 计算方法:通过线程池管理工具或应用服务器管理控制台统计。
- 单位:个。
- 影响:高活动线程数表示系统负载高。
- 异常举例:活动线程数过高可能导致线程争用,系统响应变慢。
- 最大线程数
- 定义:线程池允许创建的最大线程数量。
- 计算方法:配置项,设置在系统配置文件或管理控制台。
- 单位:个。
- 影响:最大线程数限制了系统的并发处理能力。
- 异常举例:最大线程数过低可能导致系统无法充分利用资源,过高可能导致资源浪费。
- 空闲线程数
- 定义:线程池中当前未被使用的线程数量。
- 计算方法:通过线程池管理工具或应用服务器管理控制台统计。
- 单位:个。
- 影响:低空闲线程数表示系统资源利用率高。
- 异常举例:空闲线程数过低可能导致新任务无法及时处理,响应时间延长。
GC(Garbage Collection)
- 堆内存占用
- 定义:Java虚拟机中堆内存的使用情况。
- 计算方法:通过JVM监控工具如JVisualVM获取。
- 单位:MB。
- 影响:高堆内存占用表示大量对象驻留内存。
- 异常举例:堆内存不足可能导致频繁GC,影响系统性能。
- Young Generation
- 定义:堆内存中年轻代的大小。
- 计算方法:通过JVM参数配置,监控工具获取。
- 单位:MB。
- 影响:年轻代过小可能导致对象频繁晋升到老年代。
- 异常举例:Young GC过于频繁,影响系统响应时间。
- Old Generation
- 定义:堆内存中老年代的大小。
- 计算方法:通过JVM参数配置,监控工具获取。
- 单位:MB。
- 影响:老年代过大可能导致Full GC时间过长。
- 异常举例:Full GC过于频繁,导致系统暂停时间过长,影响用户体验。
- 暂停时间
- 定义:GC操作导致的应用暂停时间。
- 计算方法:通过GC日志分析工具获取。
- 单位:毫秒(ms)。
- 影响:高暂停时间影响应用响应速度。
- 异常举例:GC暂停时间过长导致用户请求响应延迟,影响用户体验。
- full gc频率
- 定义:系统中Full GC(完全垃圾回收)操作的频率。
- 计算方法:通过GC日志分析工具统计。
- 单位:次/分钟。
- 影响:高频率Full GC表示内存压力大。因为每次 Full GC 都会暂停应用程序,进行内存回收,这种暂停会影响系统的响应时间和用户体验。
- 异常举例:频繁Full GC导致系统暂停,影响性能和用户体验。
错误信息
- 错误数
- 定义:系统中发生的错误数量。
- 计算方法:通过日志分析工具统计错误日志。
- 单位:个。
- 影响:高错误数表示系统处理过程中出现问题。
- 异常举例:错误过多可能导致系统功能失效,影响用户使用。
- 超时数
- 定义:系统中请求处理超时的数量。
- 计算方法:通过日志分析工具统计超时日志。
- 单位:个。
- 影响:高超时数表示系统处理能力不足。
- 异常举例:大量超时可能导致用户请求得不到及时响应,影响用户体验。
- 成功率
- 定义:系统成功处理请求的比例。
- 计算方法:成功请求数/总请求数。
- 单位:百分比(%)。
- 影响:低成功率表示系统处理请求的可靠性差。
- 异常举例:成功率低可能导致用户体验差,系统稳定性不足,需要及时优化。
业务层指标
关键业务的考核指标,重点关注业务价值评价的标准指标,电商类的下单量、支付量等,股票交易类关注买入、卖出以及账户中资金和持有股票的资金的关系等指标。这部分最好是和团队内BA一起确定,建立一套基于业务价值的监控指标。
压力机指标
- CPU利用率
- 定义:衡量CPU的使用情况,反映系统负载。
- 计算方法:通过系统监控工具获取CPU使用率。
- 单位:百分比(%)。
- 影响:压力机的高CPU使用率表示系统负载大,可能影响都并发的执行。
- 异常举例:持续高CPU使用率可能导致压力机系统变慢,甚至宕机,导致发压不够,出现问题。
- 可用内存数
- 定义:衡量内存的使用情况,反映系统的内存资源消耗。
- 计算方法:通过系统监控工具获取内存使用率。
- 单位:百分比(%)。
- 影响:压力机会存储很多压力日志,因此需要有足够的磁盘空间存储
- 异常举例:不足会导致压力生成失败,压力测试失败。
- 磁盘可用空间
- 定义:磁盘还剩余的存储空间。
- 计算方法:通过系统监控的查看工具查看。
- 单位:MB或GB。
- 影响:高磁盘使用率表示大量I/O操作,可能导致I/O瓶颈,压力机的执行日志无法正确保存导致执行失败。
- 异常举例:磁盘I/O过高可能导致系统响应变慢,文件读写失败,压力机失效。
- 磁盘IO
- 定义:衡量磁盘的使用情况,反映系统的I/O操作。
- 计算方法:通过系统监控工具获取磁盘使用率。
- 单位:百分比(%)。
- 影响:高磁盘使用率表示大量I/O操作,可能导致I/O瓶颈,压力机的执行日志无法正确保存导致执行失败。
- 异常举例:磁盘I/O过高可能导致系统响应变慢,文件读写失败,压力机失效。
文件句柄数
- 定义:衡量系统打开的文件句柄数。
- 计算方法:通过系统监控工具获取当前打开的文件句柄数。
- 单位:个。
- 影响:文件句柄数过多表示系统资源被大量占用。
- 异常举例:文件句柄数达到系统上限可能导致新文件无法打开,压力机失效。
网络带宽
- 定义:压力机到服务器的网络带宽以及压力机网卡配置。
- 计算方法:网络带宽靠网元设备给出是百兆还是千兆,压力机网卡配置在压力机的硬件信息中查看。
- 单位:Mbps。
- 影响:网络带宽,压力机网卡配置都影响压力机发的压力是怎么样一个方式到达SUT的。
- 异常举例:压力机网卡配置低,网络带宽小,压力往往都在网络中被阻塞了,很难有并发效果到达SUT。
- 网络IO
- 定义:衡量网络输入输出的流量。
- 计算方法:通过网络监控工具获取网络I/O数据。
- 单位:Mbps。
- 影响:高网络I/O表示大量数据传输,可能影响系统性能。
- 异常举例:网络I/O瓶颈可能导致数据传输延迟,压力响应慢。
- TCP连接数
- 定义:衡量系统中TCP连接的数量。
- 计算方法:通过网络监控工具获取当前TCP连接数。
- 单位:个。
- 影响:高TCP连接数表示系统承载大量连接请求。
- 异常举例:TCP连接数达到上限可能导致新连接无法建立,影响压力机生成压力。