浅谈接口压测

article/2025/11/7 11:25:17

一.背景

saas版在经过项目组全体成员的不断努力,最终实现了第一版的上线,为了验证sass系统可以支持多少用户同时在线访问,产生了sass版的接口压测。

二.压测是什么为什么要做压测

压测一般指性能压力测试,通过压测可以了解系统稳定性和性能,通过压测结果进行系统的调优。就比如我现在做的这个起航saas系统,一直以来忙于需求开发,看似在线上运行的好好的,可心里总是没有底。因为不了解系统的一个能力,不知道它能够承受多大的用户数在线访问,并且这些都无从考证。通过压测摸底我们可以清晰的了解系统的每一个运行指标,例如机器负载、QPS/TPS、响应时间等,这样就大概知道系统的一个运行能力,做到心中有数。后续可以根据压测结果进行系统调优。

三.本次参与角色

1:开发

开发作为最熟悉系统的人员,需开发协助制造大量数据模拟真实的运行场景。

2:测试

测试作为系统摸底压测的执行者参与其中,负责准备压测环境、压测场景、压测脚本等工作。

3:产品

产品作为系统摸底压测的业务逻辑校验者参与其中,在进行压测的时候也需介入压测并根据压测结果对系统性能有一个初步的认知

四.制定系统性能目标

在进行开展压测工作前需要裁定系统性能目标,方便后续根据目标进行压测和性能调优。在经过项目组探讨下制定了起航sass的性能指标为:系统接口响应时间在5秒内,定时任务可以在1分钟内拉到10家公司主体的数据。

五.设计压测场景和压测脚本

因为sass是面向B端商户的,所以制定了以下两种场景

1:绝对并发(瞬间加压)瞬间加压是一次性将所有流量打到系统上,主要考察系统应对突发流量、瞬时流量的应对能力。

2:梯度加压:梯度加压是一个梯度一个梯度的加压,一个梯度完事会上升到另外一个梯度,会省略掉中间的一些压力值。

图片: https://uploader.shimo.im/f/pSqyHiFQ5ZiafMiB.jpg!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJleHAiOjE2Nzc0ODMzNTgsImZpbGVHVUlEIjoibG9xZVc3anJNS2MxanhBbiIsImlhdCI6MTY3NzQ4MzA1OCwiaXNzIjoidXBsb2FkZXJfYWNjZXNzX3Jlc291cmNlIiwidXNlcklkIjo4NDUyNTI4N30.hajx4k0DtmApT3ON95Eq0aaHv7yCUHvH2cvfReYF7Sk

六.准备压测工具和监测服务器工具

本次压测起航选用 jmeter 作为压力测试工具

jmeter 是 Apache 开发的基于 Java 的性能压力测试工具,用于对 Java 开发的软件做压力测试,它可以模拟大量用户同时访问网站,对系统产生压力,从而判断系统的性能瓶颈。

选用Linux宝塔面板作为监控服务器资源利用工具

宝塔Linux面板是提升运维效率的服务器管理软件,支持一键LAMP/LNMP/集群/监控/网站/FTP/数据库/JAVA等100多项服务器管理功能。

七.执行脚本和输出压测报告

压测的执行指根据我们制定的压测方案,执行各个压测场景和压测任务,并通过观察和监控系统运行、服务器cpu资源、内存资源和负载资源等运行情况,判断系统是否满足压测目标。通过测试过程中的数据做记录和分析,形成压测报告。

总结有以下几点在:

  • 观察系统状态:在压测时需时刻观察系统状态,并运行和请求系统资源来确定压力机是否正常运行,当服务器资源反馈各项指标超负荷运行时,需在浏览器访问系统资源来确定反馈结果是否正确,并且随时做好停止压力机的运行。
  • 记录压测数据:压测数据需经过多轮压测结果(一般五轮压测)的平均值来衡量压测数据的准确性并记录下来
  • 总结压测报告:写清楚测试背景,测试方法,测试目标和选择的压力机,最后总结本次测试是否达到预期标准,如果未达到需写明和测试目标差距多少并且是那几个接口成为无法突破性能瓶颈的障碍,如果未达到还需与开发和上级领取确认,并提出改进意见和下一次压测时间。如果达到测试目标需明确本次测试数据是经过几轮测试得到的平均数据,是否压倒了系统的瓶颈,性能是否还有可调优空间。

http://chatgpt.dhexx.cn/article/REbO0QNN.shtml

相关文章

数据库select语句详解

SELECT 1.基本语法 select * from 表名 查询这张表所有内容。select 列名 from 表名 查询这张表某一列所有内容。select 列名1,列名2…from 表名 查询这张表的列1,列2,等多列。select distinct 列名 from 表名 查询这一列去掉重复内容后的内…

SQLite基本语句

SQLite基本语句 一: 1.SQLite数据库是一种嵌入式数据库,它的数据就是一个scores.db 2.经常被集成到各种应用程序中,甚至ios、Android、Mac OS、Linux 3.Python中内置了SQLite数据库,直接使用 4.数据库:关系型数据库&a…

Mysql数据库基本sql语句

文章目录 1 常用的数据类型2 查看数据库2.1 查看当前服务器中的数据库2.2 查看数据库中的表2.3 查看表的结构(字段) 3 SQL语句3.1 SQL语句分类3.2 创建及删除数据库和表3.2.1 创建新的数据库3.2.2 创建新的表3.2.3 删除指定的数据表3.2.4 删除指定的数据…

数据库的基本语句

这里写目录标题 mysql基本语句表的定义SQL语句分类 mysql基本语句 1.进入数据库 mysql -uroot -p 2.退出数据库 exit; 3.查看有哪些数据库 show databases; 4.创建新的数据库 create database 英文名字; 5.使用数据库 use 名字 6.查看表 show tables; 7.查看数据库版本 select…

Mysql基本语句

1、数据库的基本类型 1.关系数据库 特点:以表和表的关联构成的数据结构 优点:能表达复杂的数据关系。强大的查询语言,能精确查找想要的数据 缺点:读写性能比较差,尤其是海量数据的读写。数据结构比较死板 用途&am…

数据库常用语句汇总

数据库常用语句 一、对数据库的操作1. 用SQL语句创建数据库2.用SQL语句修改数据库3.用SQL语句删除数据库 二、对数据表的操作1.创建数据表定义数据表的约束NULL/NOT NULLUNIQUE约束(唯一约束)PRIMARY KET 主键约束外键约束CHECK 约束 2.修改数据表3.删除…

Mysql数据库基础语句

目录 一,常用的数据类型 二,数据库管理 1,Mysql基础语句操作 1.1,更改密码,登录数据库 1,2查看数据库结构 1.3:查看表结构 2, DDL语句:定义数据中的操作 2.1 创建数据库和表—create 2.2删…

MySql数据库基本语句

绝大多数都是记忆练习的东西 理解的偏少 一,DML语句之Delete(删除) 格式:delete from 表单名; 其后可以增加where条件限制,order by排序,limit限制 例如:delete from employee where name=‘ls’; 删除表中名字为李四的记录。 还有一个删除是truncate 格式:Truncate …

数据库基本语句

用DOS命令窗口操作数据库 启动数据库:mysql -u用户名 -p密码 当出现这个窗口意味着启动成功! DDL语句 数据库操作语句 查询当前所有数据库名称:show databases;创建数据库:create database 数据库名;如…

数据库常用操作语句总结

数据库常用操作语句总结 一、基础1.select 语句2.select distinct 语句3.where 子句4.and 和 or 运算符5.order by 语句6.insert into 语句7.update 语句8.delete 语句 二、高级1.top 子句2.like 操作符3.SQL 通配符4.in 操作符5.between 操作符6.as 别名7.join 表关联8.sql un…

java 数据结构--堆

1.堆的基本定义 二叉树的两种结构,一种是链式结构,一种就是顺序结构,普通二叉树其实是不适合用数组来存储数据,因为会造成大量空间的浪费,但完全二叉树似乎更合适于顺序结构存储,我们通常把堆(完全二叉树) 使用顺序数组来存储。 堆: (1&…

Java实现堆(最大堆)

1、什么是堆 现在有这么一个需求,设计一个结构,满足两个操作要求: 删除时,返回该结构的最大值或者最小值的元素往结构中新增元素 问题:如何组织优先这种结构? 一般数组、链表?有序数组或者链…

五、Java堆

Java堆 对于Java应用程序来说,Java堆 是虚拟机所管理的内存中最大的一块。堆,是被所有线程共享的一块内存区域,在虚拟机启动时创建。堆,唯一的目的就是存放对象实例,Java世界中“几乎”所有的对象实例都是在这里分配内…

java中的堆实现

java中的堆实现 完全二叉树:叶子结点只能出现在最下层和次下层,且最下层的叶子结点集中在树的左部。即除了最后一层,其他层的节点个数都是满的,而且最后一层的叶子节点必须靠左。 如图: 二叉堆:必须是完…

[JAVA数据结构]堆

目录 1.堆的概念 2.堆的创建 3.堆的插入与删除 3.1堆的插入 3.2堆的删除 1.堆的概念 如果有一个关键码的集合K {k0,k1, k2,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,…

堆的Java实现

一.概念 堆是计算机科学中一类特殊的数据结构的统称,堆通常可以被看做是一棵完全二叉树的数组对象。 堆的特性: 它是完全二叉树,除了树的最后一层结点不需要是满的,其它的每一层从左到右都是满的,如果最后一层结点不是…

堆的创建---java

目录 1、堆的概念 2.堆的存储方式 3、堆的创建 3.1、堆向下调整 3.2、堆的创建 1、堆的概念 如果有一个关键码的集合K {k0,k1, k2,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储 在一个一维数组中&…

【堆】堆的实现(Java)

今天学习堆这种数据结构。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质: 堆中某个结点的值总是不大于或不小于其父结点的值;堆总是一棵完全二叉树。 将根结点最大的堆叫做最大堆或大根堆,根结点最小的堆叫做最小堆或小根堆…

Java之堆和堆排序

目录 一.什么是堆 1.基本介绍 2.堆的实现方式 二.最大堆的实现 1.最大堆 2.思路分析 0.基础操作 1.添加上浮操作 2.删除下沉操作 3.将数组堆化操作 2.代码实现 三.堆排序 1.什么是堆排序 2.思路分析 3.代码实现 一.什么是堆 1.基本介绍 堆是一种数据结构&#…

六、Java堆

一、堆的核心概述 1、概述 1、堆针对一个JVM进程来说是唯一的,也就是一个进程只有一个JVM,但是进程包含多个线程,他们是共享同一堆空间的。 2、一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。 3、Java堆区在JVM启动…