并发用户数与 TPS 之间的关系

简介:

1. 背景

在做性能测试的时候,很多人都用并发用户数来衡量系统的性能,觉得系统能支撑的并发用户数越多,系统的性能就越好;对TPS不是非常理解,也根本不知道它们之间的关系,因此非常有必要进行解释。

2. 术语定义

Ø 并发用户数:指的是现实系统中操作业务的用户,在性能测试工具中,一般称为虚拟用户数(Virutal User),注意并发用户数跟注册用户数、在线用户数有很大差别的,并发用户数一定会对服务器产生压力的,而在线用户数只是 ”挂” 在系统上,对服务器不产生压力,注册用户数一般指的是数据库中存在的用户数。

Ø TPS:Transaction Per Second, 每秒事务数, 是衡量系统性能的一个非常重要的指标,

3. Vu和TPS换算

Ø 简单例子:在术语中解释了TPS是每秒事务数,但是事务时要靠虚拟用户做出来的,假如1个虚拟用户在1秒内完成1笔事务,那么TPS明显就是1;如果某笔业务响应时间是1ms,那么1个用户在1秒内能完成1000笔事务,TPS就是1000了;如果某笔业务响应时间是1s,那么1个用户在1秒内只能完成1笔事务,要想达到1000TPS,至少需要1000个用户;因此可以说1个用户可以产生1000TPS,1000个用户也可以产生1000TPS,无非是看响应时间快慢。

Ø 复杂公式:

试想一下复杂场景,多个脚本,每个脚本里面定义了多个事务(例如一个脚本里面有100个请求,我们把这100个连续请求叫做Action,只有第10个请求,第20个请求分别定义了事务10和事务20)具体公式如下:

符号代表意义:

Vui表示的是第i个脚本使用的并发用户数

Rtj表示的是第i个脚本第j个事务花费的时间,此时间会影响整个Action时间

Rti表示的是第i个脚本一次完成所有操作的时间,即Action时间

n 表示的是第n个脚本

m 表示的是每个脚本中m个事务

那么第j个事务的TPS = Vui/Rti

总的TPS=

4. 如何获取Vu和TPS

Ø 并发用户数(Vu)获取

新系统:没有历史数据作参考,只能通过业务部门进行评估。

旧系统:对于已经上线的系统,可以选取高峰时刻,在一定时间内使用系统的人数,这些人数认为属于在线用户数,并发用户数取10%就可以了,例如在半个小时内,使用系统的用户数为10000,那么取10%作为并发用户数基本就够了。

Ø TPS获取

新系统:没有历史数据作参考,只能通过业务部门进行评估。

旧系统:对于已经上线的系统,可以选取高峰时刻,在5分钟或10分钟内,获取系统每笔交易的业务量和总业务量,按照单位时间内完成的笔数计算出TPS,即业务笔数/单位时间(560或1060)

5. 如何评价系统的性能

针对服务器端的性能,以TPS为主来衡量系统的性能,并发用户数为辅来衡量系统的性能,如果必须要用并发用户数来衡量的话,需要一个前提,那就是交易在多长时间内完成,因为在系统负载不高的情况下,将思考时间(思考时间的值等于交易响应时间)加到脚本中,并发用户数基本可以增加一倍,因此用并发用户数来衡量系统的性能没太大的意义。

6. 相关案例

通过大量性能测试我们发现不需要用上万的用户并发去进行测试,只要系统处理业务时间足够快,几百个用户甚至几十个用户就可以达到目的。另外咨询很多专家做过的性能测试项目,基本都没有超过5000用户并发。

因此对于大型系统、业务量非常高、硬件配置足够多的情况下,5000用户并发就足够了;对于中小型系统,1000用户并发就足够了。

7. 性能测试策略

做性能测试需要一套 标准化流程及测试策略,并发用户数只是指标考虑的一个,在做负载测试的时候,一般都是按照梯度施压的方式去加用户数,而不是在没有预估的情况下,一次加几 万个用户,,交易失败率非常高,响应时间非常长,已经超过了使用者忍受范围内,这样做没有多大的意义,这就好比“有多少钱可以干多少事”一样,需要选择相 关的策略。

8. Loadrunner VS PTS

从下图对比项可以看出,PTS比Loadrunner(LR)更能让客户接受。
screenshot

9. 总结

Ø 系统的性能由TPS决定,跟并发用户数没有多大关系。在同样的TPS下,可以由不同的用户数去压(通过加思考时间设置)。

Ø 系统的最大TPS是一定的(在一个范围内),但并发用户数不一定,可以调整。

Ø 建议性能测试的时候,不要设置过长的思考时间,以最坏的情况下对服务器施压。

Ø 一般情况下,大型系统(业务量大、机器多)做压力测试,5000个用户并发就够了,中小型系统做压力测试,1000个用户并发就足够了。

文章转载自 开源中国社区 [http://www.oschina.net]

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
5月前
|
搜索推荐 测试技术 数据库
QPS、TPS、RT、并发数、吞吐量分别是什么意思
QPS、TPS、RT、并发数、吞吐量分别是什么意思
327 0
|
4月前
|
存储 前端开发
【源码共读】大并发量如何控制并发数
【源码共读】大并发量如何控制并发数
41 0
|
12天前
|
测试技术
TPS、QPS和系统吞吐量的区别和理解
TPS、QPS和系统吞吐量的区别和理解
157 0
|
并行计算 前端开发 JavaScript
【修正版】QPS、TPS、RT、并发数、吞吐量理解和性能优化深入思考
在了解qps、tps、rt、并发数之前,首先我们应该明确一个系统的吞吐量到底代表什么含义,一般来说,系统吞吐量指的是系统的抗压、负载能力,代表一个系统每秒钟能承受的最大用户访问量。
1290 0
【修正版】QPS、TPS、RT、并发数、吞吐量理解和性能优化深入思考
|
9月前
|
存储 Cloud Native 前端开发
12-如何抗住双11一天几十亿的订单量?JVM该如何设置内存?
通过之前相关JVM的基础知识学习我们可以结合一些实际生产案例来进行结合巩固和说明,我们在上线一个生产系统的时候,针对预估的并发压力,到底应该如何合理的给出一个未经过调优的比较合理的初始值。 另外我们会分析各种参数在设置的时候有哪些考虑的点,Java堆内存到底需要多大?新生代和老年代的内存分别需要多大?永久代和虚拟机栈分别需要多大?这些我们都会结合案例来一步一步的分析。 注意:JVM参数到底该如何设置,一定是根据不同的业务系统具体的一些场景来调整的,不是说有一个通用的配置和模板,照着设就没问题了,这个思路是肯定不对的,一定要结合案例和业务场景来分析。
100 0
12-如何抗住双11一天几十亿的订单量?JVM该如何设置内存?
|
12月前
|
测试技术
关于系统用户数,并发用户数,在线用户数,吞吐量(摘)
关于系统用户数,并发用户数,在线用户数,吞吐量(摘)
202 0
|
测试技术 应用服务中间件 Apache
QPS、TPS、并发用户数、吞吐量等定义
QPS (Queries Per Second) 是每秒查询率 ,是一台服务器 每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内 所处理流量多少的衡量标准, 即每秒的响应请求数,也即是最大吞吐能力。
3365 0
|
SQL 运维 监控
redis瞬时查询返回量过多导致出口流量打满,影响系统整体响应时间
redis瞬时查询返回量过多导致出口流量打满,影响系统整体响应时间
348 0
redis瞬时查询返回量过多导致出口流量打满,影响系统整体响应时间
|
SQL NoSQL 安全
只改了五行代码接口吞吐量提升了10多倍
首先,提升日志打印级别到DEBUG。emm... 提升不大,好像增加了10左右。 然后,拆线程 @Async 注解使用线程池,控制代码线程池数量(之前存在3个线程池,统一配置的核心线程数为100)结合业务,服务总核心线程数控制在50以内,同步增加阻塞最大大小。结果还可以,提升了50,接近200了。
132 0
|
弹性计算 关系型数据库 MySQL
增加并发数后,TPS增加, IOPS却下降现象分析
增加并发数后,TPS增加, IOPS却下降现象分析
增加并发数后,TPS增加, IOPS却下降现象分析