首页 > 其他分享 >【性能测试】性能测试规范

【性能测试】性能测试规范

时间:2023-02-15 11:58:38浏览次数:48  
标签:性能 系统 规范 并发 TPS 测试 CPU

 

1     前言

性能是一个充满挑战的领域,它是主观的,复杂的。

主观在于对系统是否存在性能问题的判断是模糊的,用户认为系统的好与坏也没有界定。故我们需要通过定义清晰的目标,如响应耗时、响应延时范围等等指标,把主观的性能变得客观。

复杂在于往往出现性能问题,没有一个明确的分析起点,通常是根据经验从猜测开始,比如,网络、系统间调用连锁故障。解决复杂的性能问题通常需要全局性的方法。整个系统(包括自身内部和外部的交互度可能需要被排查研究),涉及到的技能非常广泛。

2     概述

2.1   目的

为系统、项目在性能测试时,遵循相同标准,统一原则。本文主要对性能指标概念及分析方法、评判标准、测试策略以及工具使用进行说明。旨在指导测试人员更好的理解各个性能指标,对系统的性能质量做出准确的评价与分析。

2.2   适用范围

本规范适用于测试、开发、运维等任何想了解性能测试活动人群。

3     性能测试指标

3.1   系统指标

3.1.1     定义

响应时间:完成一次操作的时间。包括用于等待和服务的时间,也包括用来返回结果的时间。

TPS:每秒事务数,指系统每秒能够处理的事务数量(一个事务可能是有多个请求组成)。

QPS:每秒查询率,指系统每秒能够处理的查询(常指一个request请求)数量。

并发用户数:在同一时刻与服务器进行交互的在线用户数量。

请求成功率:结合压测工具断言,所有请求中成功接受响应所占比例。

3.1.2     获取方法

前提:网络环境稳定,压力机跟被测服务主机尽可能再同一局域网,避免网络环境导致压测结果不准确。

一般性能压测工具均会有并发用户数、响应耗时、TPS、错误率等结果统计。具体压测方法参考本文档第六章节“性能测试执行策略”。

3.1.3     分析方法

结合不同压力情况的的压测类型&目的综合分析。

 

拐点补充说明:

1)      基准(主分析响应时间) ——参考依据

2)      排队拐点(与基准对比响应时间) ——工作的线程超过CPU核数后很可能就会出现排队

3)      最优并发拐点——当TPS不再明显上升时,响应耗时成倍增长前

4)      TPS拐点(最大处理能力,不断加压至TPS缓慢或不再上升趋势时)

5)      错误拐点(逐步加压验)),这里就相当于一个告警值了,这里的报错需要从维度看,大部分可以分析接受(或优化 或熔断 或限流 或降级 或者前端友好提示)

错误出现在TPS拐点前或者资源瓶颈前,需要关注

3.2   资源指标

3.2.1     定义

CPU:CPU使用率——非空闲时间占总CPU时间的百分比;平均负载——系统的平均活跃进程数。

内存:内存使用率——已经使用的物理内存占总物理内存的百分比;YGC/FGC——垃圾回收,YGC 是对新生代堆进行回收,FGC是对整个堆内存进行回收;关注YGC/FGC执行次数及耗时。

磁盘I/O:磁盘I/O使用率——磁盘忙于处理I/O请求的百分比(%util)。I/O响应时间:I/O请求从发出到收到响应的间隔时间(r_await+w_await)。

网络:带宽——链路的最大传输速率;吞吐量——压测时实际的数据传输速率。

 

3.2.2     获取方法

在压测时同步监控各被测服务资源使用情况,可根据公司集成的监控平台进行查看监控分析

应用:

现市场上有很多开源资源监控平台(如grafana),如使用的是云产品可以在对应云平台查看对应主机资源使用情况,也可登录到主机使用Linux性能分析相关命令查看各指标使用情况。

Linux观测CPU命令:uptime、vmstat、mpstat、sar、ps、top、pidstat、time和ptime、turbostat、showboost、pmcarch、perf~

Linux观测内存命令:vmstat、PSI、swapon、sar、slabtop、numastat、ps、top、pmap、perf、drsnoop、wss、bpftrace~

Linux观测磁盘命令:iostat、sar、PSI、pidstat、perf、biolatency、biosnoop、iotop、biotop、biostacks、blktrace、bpftrace~

Linux观测网络命令:ss、ip、ifconfig、nstat、netstat、sar、nicstat、ethtool、tcplife、tcptop、tcpdump、bpftrace、tcpretrans、Wireshark~

 

DB:

如裸金属部署结合Linux+SQl命令查看分析。现大部分公司数据库多直接用云产品,相对便捷清晰,如云产品可登录到云平台查看对应DB实例各指标情况,包括SQL的执行情况等等。

其他:

mongo、redis、ES等根据部署类型具体分析,如裸金属部署结合Linux+命令查看分析,如为云产品可在对应的云平台进行监控分析。

3.2.3     分析方法

通过“TPS”与“系统资源使用率”之间的关系进行分析。

通过并发用户数的增加和资源使用率的增长进行分析,判断并发资源开销。

数据库除各资源表现同时需关注SQL执行情况。

 

以下是根据经验给出的不同类型系统子下资源合理利用率,仅供参考、仅供参考、仅供参考~

以单实例2C机器为例

功能类型

接口维度

接口类型

基准90%RT

TPS

单实例默认配置

举例

查询类

端到端查询

简单

200ms

200笔/秒

2C

1、直接查询数据库或缓存

一般

200ms

100笔/秒

2C

1、查询后重组
2、涉及多系统展示

复杂

400ms

50笔/秒

2C

1、查询后重组
2、涉及多系统展示
3、调核心接口≥3个
4、子服务≥5个(除网关、转发等无业务逻辑服务)

子系统/子服务查询

简单

50ms

400笔/秒

2C

1、直接查询数据库或缓存

一般

100ms

200笔/秒

2C

1、涉及服务≥2(除网关、转发等无业务逻辑服务)
2、涉及表≥3
3、查询+组装

复杂

200ms

80笔/秒

2C

1、涉及表≥5(除配置表)
2、查询+组装+计算

金融维护类

端到端

非核心维护

500ms

50笔/秒

2C

all

核心/支付维护类

1000ms

50笔/秒

8C

all

核心/支付交易类

1000ms

50笔/秒

8C

all

子系统/子服务

非核心维护

150ms

100笔/秒

2C

all

核心/支付维护类

500ms

100笔/秒

8C

all

核心/支付交易类

500ms

100笔/秒

8C

all

消费能力

mq/kafka~

 

 

150笔/秒

2C

all

 

3.3   其他

饱和度:某一资源无法提供服务的工作排队程度。

瓶颈:在系统性能里,瓶颈指的是限制系统性能的那个资源。分辨和移除系统瓶颈是提高系统性能的一项重要工作。

4     性能测试基本流程

 

 

1)      需求分析:判断性能需测免测及目标指标(众安当前判断在jira控制,指标按照所制定的统一指标),如有特殊情况特殊分析(如审计、特定活动)。

2)      测试计划:测试里程碑、目的、时间、负责人等。

3)      测试方案:背景、目的、指标、被测范围、执行&监控策略等。

4)      测试环境:一般使用专用性能环境,环境配置与压测结果息息相关,当前ZAGJ性能环境各服务配置基本为生产单实例等配。

5)      测试数据:主要分为基础数据(铺底数据,不同铺底数据量情况下的压测结果往往也会有所差异)与测试数据(脚本参数化数据)。

6)      测试脚本:根据测试计划&方案按需编写调试。

7)      测试场景:基准、单负载、混合、稳定性等。

8)      测试报告:压测结果分析&总结。

9)      性能调优:参考本文档第5章节“分析评估&调优”。

5     分析评估&调优

5.1   现象分析

在明确响应时间要求限制下,压力测试过程中,找到最大吞吐量(TPS)的拐点,结合被测服务&DB的资源(CPU、内存等)使用率,若使用率过低,继续增加并发用户数,若被测服务任意节点资源都未达到80%使用率,说明系统存在系统类,软件类问题和瓶颈,需要进一步分析并调优。

5.2   调优示例

层级

调优对象

应用程序

应用程序逻辑、请求队列大小、执行的数据库请求

数据库

数据库表的布局、索引、缓冲

系统调用

内存映射或读写、同步或异步I/O标志

文件系统

记录尺寸、缓存尺寸、文件系统可调参数、日志

存储

RAID级别、磁盘类型和数目、存储可调参数

5.3   何时停止分析

1)     当已经解决大部分性能问题时

2)     当潜在投资回报率低于分析成本时

3)     当其他地方有更大的投资回报率时

6     性能测试执行策略

类型

目的

测试方法

备注

基准测试

在服务器没有压力的情况下,获取单支交易的处理时间,为后续场景提供依据。

在系统无压力情况下单用户执行5分钟或重复2000次,取平均响应时间。一般情况下不需要监控资源消耗、数据库处理等

单接口性能摸底,检查业务本身是否存在性能缺陷

单交易负载测试

获取系统单支交易的最大处理能力,以及几个性能指标之间的关联关系、变化趋势,验证单个交易是否存在并发性问题。

使用压测工具逐步增加该交易并发用户数,每次执行10分钟,观察处理能力拐点,需监控服务器资源消耗、数据库处理能力等。

定位排查单接口瓶颈,是否支持并发,是否存在性能隐患

混合测试

考察各交易按配比逐渐加压的情况下,系统随负载变化处理能力趋势,如响应时间、TPS、资源消耗等,极限情况下系统处理能力

通过逐渐加压的方式,每次执行10~30分钟,需监控服务器资源消耗、数据库处理能力等。混合负载测试也需要判断拐点,判断方式与单交易负载测试相同,需注意各交易满足配比。

为验证需求提出的性能要求,结合实际可能的高压力场景,较全面的检测系统的性能表现

稳定性测试

系统长时间正常负载下的处理能力,是否有进程内存泄露、存储空间不足、inode数量不足、session未自动关闭、存量数据增长导致数据库执行计划不适用等隐藏问题。

对被测系统在混合场景拐点并发*75%压力下,执行2小时+,验证被测系统能否稳定运行。

执行时长建议:8小时(也可以是4、6、12、24、24*7等,根据实际情况灵活掌握)

7     性能命名规范

S、C、R分别表示脚本、场景、结果

Base、single、mix、stable分别表示基准、单负载、混合、稳定性

7.1   脚本命名规范

【需求ID】S-yyMMddHHmm.jmx

必要时可添加场景名称

如下

基准

【需求ID】S-2212211148-base.jmx

单场景

【需求ID】S-2212211148-single.jmx

混合

【需求ID】S-2212211148-mix.jmx

稳定性

【需求ID】S-2212211148-stable.jmx

7.2   结果命名规范

【需求ID】R-场景-并发用户数-MMddHHmm.jtl

Eg:

【需求ID】R-base-02071530.jtl

基准测试结果,因为基准默认为1并发,故无需添加并发用户数

【需求ID】R-single-50U-02071530.jtl

单负载50并发结果

【需求ID】R-single-1_50U-02071530.jtl

单负载1~50U阶梯并发结果

【需求ID】R-mix-1_200U-02071530.jtl

混合1~50U阶梯并发结果

 

8     Linux性能分析60秒

#

工具(命令)

说明

1

uptime

分别输出 1 分钟、5 分钟、15 分钟的平均负载情况

2

dmesg -T | tail

查看最近 10 条系统消息(如果有)。查找可能导致性能问题的错误。上面的示例包括 oom-killer 和 TCP 丢弃请求。

3

vmatat 1

系统级统计:运行队列长度、交换、CPU总体使用情况

4

mpstat -P ALL 1

CPU平衡情况:如单个CPU很繁忙,意味着现成扩展性很糟糕

5

pidstat 1

每个进程CPU使用情况:识别意外的CPU消费者,以及每个进程的用户/系统CPU时间

6

iostat -sxz 1

磁盘I/O统计:IOPS和吞吐量、平均等待时间、忙碌百分比

7

free -m

内存使用情况,包括文件系统的缓存

8

sar -n DEV 1

网络设备I/O,数据包、吞吐包等

9

sar -n TCP,ETCP 1

TCP统计:连接数、重传

10

top

整体概览

 

标签:性能,系统,规范,并发,TPS,测试,CPU
From: https://www.cnblogs.com/manlucky/p/17109916.html

相关文章

  • 2-STM32+Air724UG基本控制篇(自建物联网平台)-整体运行测试-Android扫码绑定Air724,并
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ZLAir724UGA/my.html"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p>......
  • 一个合格的软件测试工程师应该具有的能力
    从事软件测试工作已经有一年之久了,从最初的啥都不懂,到现在能够熟练完成测试工作,我经历了很多,也成长了很多,在这一年多的日子里,我学到了很多东西。当然也许现在我还不是......
  • 软件测试工作经验分享
    一、测试阶段划分1、单个模块功能测试时间相对较长,但每一个项目都应该有专门的集成测试阶段,并且应该不止进行一轮。每一轮集成测试,应该都有自己的目的,比如第......
  • 电源纹波测试方法
    一个稳定的电路,离不开一个良好的电源设计。在汽车电子中经常会测试电源纹波来验证电源的性能,但在实际测试时经常会有一些误区。下面列举常见示波器测量电源纹波的误区及正......
  • 性能分析工具Linux perf使用经验
    性能分析工具Linuxperf使用经验一、Perf简介:1、系统级性能优化通常包括两个阶段:性能剖析(performanceprofiling)和代码优化。性能剖析的目标是寻找性能瓶颈,查找引发性能问......
  • Vulnhub之DC 9靶机详细测试过程
    DC9识别目标主机IP地址(kali㉿kali)-[~/Desktop/Vulnhub/DC9]└─$sudonetdiscover-ieth1-r192.168.56.0/24Currentlyscanning:192.168.56.0/24|Scree......
  • Nginx一网打尽:动静分离、压缩、缓存、黑白名单、跨域、高可用、性能优化...
    Nginx一网打尽:动静分离、压缩、缓存、黑白名单、跨域、高可用、性能优化...Linux就该这么学 2023-02-1508:02 发表于北京作者:竹子爱熊猫  来源:juejin.cn/post/71......
  • 测试
    第一章、数据结构与算法基本实现01:顺序表1.用C语言定义顺序表头文件02:链表03:栈04:队列05:广义表06:字符串07:树与查找08:图09:排序第二章、leetcode解法第三章、其......
  • DTOJ 2023.02.11 测试 题解
    DTOJ2023.02.11测试题解2023省选模拟Round#12\(100+8+50=158\)还行T2想到了,但是没写,我觉得写了也不一定写得出来,挺妙的T1题意http://59.61.75.5:18018/p/545......
  • 非功能测试指标
    1、性能指标:TPS、响应时间、CPU使用率 三个方面可以结合起来,设计一个可靠的系统。容错:发生故障时,如何让系统继续运行。高可用:系统中断时,如何尽快恢复。灾备:系统毁灭......