首页 > 其他分享 >性能压测,如何评估一个系统的TPS和并发数?

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

时间:2023-11-28 13:59:02浏览次数:35  
标签:150 压测 业务 并发 TPS 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一般有以下几种衡量系统性能指标的方式:
1.一般业务系统,选取一天业务量,根据二八原则估算TPS指标,二八原则即:80%的业务在20%的时间里完成,TPS=(业务量 * 80%)/(时间(单位s) * 20%)
2.秒杀类系统模型,选取高峰时间段业务量,估算TPS指标。
3.波动类、交易集中类系统模型,选取特殊交易时间段业务量,预估TPS指标。
另外需要注意:TPS指标需要考虑业务增长量相关因素

 

如某银行系统某业务订单数据如下:
日常8小时,100万笔交易量,高峰期间交易量8万笔,高峰持续时间9分钟,预估系统3年内每年业务增长率为20%

那么:
1. 该业务系统日常期间TPS为:TPS=(日常交易量 * 80%)/(时间 * 20%)=(100万 * 80%)/(8小时* 60 * 60 * 20%)≈139笔/秒
2. 该业务系统高峰期间TPS为:TPS=高峰期间交易量/高峰持续时间(单位s)=8万/9分钟* 60≈148笔/秒

3. 该业务系统包含每年业务增长率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笔/秒。

4. 该系统性能测试最低支持的并发数为:
如果规定该业务的平均响应时间不高于500毫秒,那么通过TPS=并发用户数/业务平均时间,就可以得到并发用户数=0.5秒*144笔/秒=72个,即系统最低要求支持的并发数为:72个

说明:这里平均响应时间不同的公司不同业务可接受的响应时间是不同的,一般对于在线实时交易:
互联网企业:500毫秒以下,例如淘宝业务10毫秒左右
金融企业:1秒以下为佳,部分复杂业务3秒以下
保险企业:3秒以下为佳
制造业:5秒以下就行。

即可得到该系统的TPS为144笔/秒,并发数为72个。

 

=》3.横向TPS扩展
假设单节点我们通过上面的方法,计算出来的TPS为150笔/秒,平均响应时间不高于500毫秒,并发用户数75个
现在我们想要系统支撑高并发数,通过扩展服务器数量来提升业务处理的能力,那么,我们也可以计算横向TPS扩展增长率:

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

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

标签:150,压测,业务,并发,TPS,20%,节点
From: https://www.cnblogs.com/miaomiaokaixin/p/17861779.html

相关文章

  • 性能测试之100万并发 vs 100万TPS
    一、问题性能测试时,有人说我要用jmeter压测,实现100万并发能做么? 二、回答对于普通的系统来说,一般这种是将100万并发和100万TPS的概念搞混了。分析如下:根据公式:TPS=并发数/业务平均时间,如果系统要求业务平均响应时间不超过10毫秒的话,那么100万并发的TPS就是:100万/10毫秒=100......
  • Java并发编程:面向对象思想与并发编程思想的融合
    1.封装共享变量1.1识别可变化与不变的共享变量识别可变化与不可变化的共享变量。针对初始化后不再改变的变量,可以添加final修饰。不仅编译器编译更快,也对后续开发人员指明了变量属性,更防范了意想不到的修改行为。1.2针对可变化的共享变量,进行封装处理针对共享变量的访问,若......
  • 全链路压测自动化实践
    全链路压测自动化实践是指在软件开发过程中,通过自动化工具和技术来模拟真实的业务场景和流量负载,对应用程序的各个环节进行全面的压力测试。下面是一些关于全链路压测自动化实践的内容: 1、环境准备:在进行全链路压测自动化之前,需要准备相应的测试环境。包括搭建开发、测试和生......
  • HTTP 和 HTTPS 之间除了安全性区别外,还有哪些区别
    HTTP和HTTPS是两种常见的网络协议,它们都是用于在浏览器和服务器之间传输数据的。但是,它们之间也有一些重要的区别,这些区别涉及到数据的安全性、传输性能、使用成本和搜索排名等方面。本文将从以下几个方面来介绍HTTP和HTTPS的区别,本文内容大纲如下:数据的安全性HTTP协议......
  • 【打怪升级】【万字长文】聊聊并发编程(前言)
    在之前无意中看到有群友关于:业务中尽量不要使用并发编程和线程池一文中,引发了几点思考:对于不熟悉并发编程的开发者,引入并发设计确实会导致意想不到的问题出现,增加了维护难度和周期;但是现实在某些设计场景中,我们无法避免这种设计,并发带来的好处显而易见。今年再重温了几遍并发设计......
  • 如何使用JMeter测试https请求?800字教程包教包会!
    HTTP与HTTPS略有不同,所以第一次使用JMeter测试https请求时遇到了问题,百度一番后找到解决方法:加载证书。下面内容主要记录这次操作,便于后续参考:操作浏览器:谷歌(1)下载被测网站证书,点击安全锁,选择安全证书 (2)查看证书的详细信息,显示所有后点击复制到文件(3)依次下一步,选择DER编......
  • tomcat配置https协议
    1、在jdk的安装目录\bin\keytool.exe下打开keytool.exe进入控制台执行keytool-genkeypair-alias"tomcat"-keyalg"RSA"-keystore"/opt/tomcat.keystore"注意:“名字与姓氏”应该是域名,输成了姓名,和真正运行的时候域名不符,会出问题组织单位写report.test.yunshanmeicai.co......
  • HTTPS 性能优化技巧
    认识SSL/TLSSSL和TLS都是用于保障端到端之间连接的安全性。SSL最初是由Netscape开发的,后来为了使得该安全协议更加开放和自由,更名为TLS,并被标准化到RFC中,现在主流的是TLS1.2版本。从上图,可以看出SSL/TLS是介于应用层和传输层之间,并且分为握手层(HandshakeLayer)和记录层(Record......
  • Java开发者的Python快速进修指南:网络编程及并发编程
    今天我们将对网络编程和多线程技术进行讲解,这两者的原理大家都已经了解了,因此我们主要关注的是它们的写法区别。虽然这些区别并不是非常明显,但我们之所以将网络编程和多线程一起讲解,是因为在学习Java的socket知识时,我们通常会将它们结合使用,以实现服务器对多个客户端连接的阻塞IO......
  • 数据库总结复习(并发控制三)
    目录前言封锁粒度概念多粒度封锁意向锁类型规则小结--引出问题索引锁前言本文为JMU22级数据库原理考前复习而总结归纳,刨除了课本以及课堂上晦涩且长篇大论的文章,以尽量简洁易懂的语句来对知识点进行归纳。继上一篇文章提到的“封锁粒度”接着对并发控制进行归纳总结。封锁......