Jmeter 性能测试 —— 评估一个系统TPS与并发数!

news/2025/2/23 15:45:20

问题:性能压测,如何评估一个系统的TPS和并发数?

1、对于新系统

由业务部门或开发人员预估交易量和TPS指标

可以参考公式:并发用户 = 在线用户数 * 10%。

当一个系统还没有上线时,我们可以预判的是这个系统准备要给多少人使用

如日常在线用户数量要支撑1000,那么并发用户参考值为:1000* 10%=100。

如果规定该业务的平均响应时间不高于500毫秒,那么通过TPS=并发用户数/业务平均时间

就可以得到TPS=100/0.5s=200笔/秒。

为了系统健壮性考虑,我们还可以在预估计算得到的TPS基础上扩个1.5倍得到200笔/秒* 1.5=300笔/秒。

即可得到该系统的TPS为300笔/秒,并发数为150。

2、对于已上线系统

TPS有两个公式:

公式一:TPS = 总请求 / 总时间,实际会考虑二八原则公式二:TPS = 并发数 / 业务平均时间

TPS一般有以下几种衡量系统性能指标的方式:

①一般业务系统,选取一天业务量,根据二八原则估算TPS指标

二八原则即:80%的业务在20%的时间里完成,TPS=(业务量 * 80%)/(时间(单位s) * 20%)

②秒杀类系统模型,选取高峰时间段业务量,估算TPS指标。

③波动类、交易集中类系统模型,选取特殊交易时间段业务量,预估TPS指标。

另外需要注意:TPS指标需要考虑业务增长量相关因素

如某银行系统某业务订单数据如下:

日常8小时,100万笔交易量,高峰期间交易量8万笔,高峰持续时间9分钟,预估系统3年内每年业务增长率为20%

那么:

该业务系统日常期间TPS为:TPS=(日常交易量 * 80%)/(时间 * 20%)=(100万 * 80%)/(8小时* 60 * 60 * 20%)≈139笔/秒
该业务系统高峰期间TPS为:TPS=高峰期间交易量/高峰持续时间(单位s)=8万/9分钟* 60≈148笔/秒
该业务系统包含每年业务增长率TPS为:首先三年后业务量=日常交易量* (1+20%)* (1+20%)* (1+20%)=100万* 1.2* 1.2* 1.2=172.8万
其次被测业务交易占总业务交易比例为:40%,那么被测试业务交易量为:总业务交易量* 40%=172.8万* 40%=69.12万
最后被测业务包含每年业务增长率TPS为:(被测试业务交易量* 80%)/(时间(单位s) * 20%)=(69.12万* 80%)/8小时* 60 * 60 * 20%)=96笔/秒
一般情况下,为了系统健壮性考虑,我们会在预估计算得到的未来的TPS基础上扩个1.5倍即:该业务系统包含每年业务增长率TPS为=96*1.5倍=144笔/秒。
该系统性能测试最低支持的并发数为:如果规定该业务的平均响应时间不高于500毫秒,那么通过TPS=并发用户数/业务平均时间,就可以得到并发用户数=0.5秒*144笔/秒=72个,即系统最低要求支持的并发数为:72个
说明:这里平均响应时间不同的公司不同业务可接受的响应时间是不同的
一般对于在线实时交易:互联网企业:500毫秒以下,例如淘宝业务10毫秒左右金融企业:1秒以下为佳,部分复杂业务3秒以下保险企业:3秒以下为佳制造业:5秒以下就行。
即可得到该系统的TPS为144笔/秒,并发数为72个。

3、横向TPS扩展

假设单节点我们通过上面的方法,计算出来的TPS为150笔/秒,平均响应时间不高于500毫秒,并发用户数75个

现在我们想要系统支撑高并发数,通过扩展服务器数量来提升业务处理的能力。

那么,我们也可以计算横向TPS扩展增长率:

单节点TPS:150笔/秒2节点TPS:265笔/秒,则增长率为:(2节点TPS-单节点TPS)/(2节点-1)/单节点TPS=(265-150)/(2-1)/150≈76.67%3节点TPS:375笔/秒,则增长率为:(3节点TPS-单节点TPS)/(3节点-1)/单节点TPS=(375-150)/(3-1)/150≈75%4节点TPS:488笔/秒,则增长率为:(4节点TPS-单节点TPS)/(4节点-1)/单节点TPS=(488-150)/(4-1)/150≈75.11%5节点TPS:600笔/秒,则增长率为:(5节点TPS-单节点TPS)/(5节点-1)/单节点TPS=(600-150)/(5-1)/150≈75%6节点TPS:715笔/秒,则增长率为:(6节点TPS-单节点TPS)/(6节点-1)/单节点TPS=(715-150)/(6-1)/150≈75.33%7节点TPS:825笔/秒,则增长率为:(7节点TPS-单节点TPS)/(7节点-1)/单节点TPS=(825-150)/(7-1)/150≈75%8节点TPS:940笔/秒,则增长率为:(8节点TPS-单节点TPS)/(8节点-1)/单节点TPS=(940-150)/(8-1)/150≈75.24%9节点TPS:1050笔/秒,则增长率为:(9节点TPS-单节点TPS)/(9节点-1)/单节点TPS=(1050-150)/(9-1)/150≈75%10节点TPS:1165笔/秒,则增长率为:(10节点TPS-单节点TPS)/(10节点-1)/单节点TPS=(1165-150)/(10-1)/150≈75.19%

一般情况下,我们要求扩展服务器的数量进行高并发的处理,TPS增长率应在75%以上。

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

文章来源:https://blog.csdn.net/m0_47485438/article/details/135159766
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.niftyadmin.cn/n/5281569.html

相关文章

5-Docker实例-nginx application

1.编写Dockerfile文件,添加如下内容并保存 命令: vim Dockerfile [root@centos79 ~]# cat Dockerfile FROM centos:centos7 MAINTAINER ztjENV PATH /usr/local/nginx/sbin:$PATHADD nginx-1.8.0.tar.gz /usr/local/ ADD epel-release-latest-7.noarch.rpm /usr/local/RUN…

Android 使用Serialiable接口和Parcelable接口进行数据传送

一、前言 这篇文章主要针对Serialiable和Parcelable接口来传递对象。呈现的功能是跳转到另一个界面,然后通过toast展现我收到的数据。 二、使用Serialiable接口传递数据 1.创建需要传递的对象 //必须实现Serializable接口,此对象才有传递的资格 publ…

【Spring实战】配置单数据源

文章目录 1. 定义2. 准备3. 打印连接信息4. 实战1)创建表2)添加数据3)查询数据3)执行 5. 详细代码总结 在我们常见的应用程序中,与数据库的交互是不可避免的一部分。Spring 提供了简单而强大的数据访问抽象&#xff0c…

鳄鱼目标检测数据集VOC格式100张

鳄鱼是一种生活在热带和亚热带地区的爬行动物,属于爬行纲鳄形目鳄鱼科。它们的体形庞大,有粗壮的四肢和强壮的尾巴,一般能长到2-6米长,体重可达500公斤以上。鳄鱼的皮肤粗糙,呈灰褐色或黑色,布满了坚韧的鳞…

vue前端开发中,通过配置,实现多个入口文件的方法

由于vue为单页面项目,通过控制组件局部渲染,main.js是整个项目唯一的入口,整个项目都在一个index.html外壳中。 若项目过大,会造成单页面负载过重;同时,多页面利于模块独立部署。 要单独将页面当成一个项…

leetcode中的状态机类型的题目

1 总结 2 LC57. 插入区间 2.1 解析 先是要确定新区间插入到哪一个位置(也有可能),插入后需要确定这个区间是否涉及到合并问题。 所以我们可以设计一个flag变量,确定区间是否插入,插入完成则进行到区间合并阶段。 2.…

黑豹程序员-读properties属性文件本地正常,打包jar后运行出错

读properties属性文件本地正常,打包jar后运行出错 java.io.FileNotFoundException:file:\D:\code\xml-load\target\XX.jar!\XXX(文件名、目录名或卷标语法不正确。)原因是读取方式不正确 当使用Spring Boot将应用打成jar时,需要读取resources目录下配置…

MariaDB 主-从

一、MariaDB 主-从 同步配置 基于一台服务器的数据复制,故得名单机热备,主-备 Active-Standby 主-备方式,即指的是一台服务器处于某种业务的激活状态(即Active状态),另一台服务器处于该业务的备用状态(即Standby状态),主数据库数据更新后,备份服务器同步数据只本机 1.安装Ma…