在作性能测试的时候,不少人都用并发用户数来衡量系统的性能,以为系统能支撑的并发用户数越多,系统的性能就越好;对TPS不是很是理解,也根本不知道它们之间的关系,所以很是有必要进行解释。html
Ø 并发用户数:指的是现实系统中操做业务的用户,在性能测试工具中,通常称为虚拟用户数(Virutal User),注意并发用户数跟注册用户数、在线用户数有很大差异的,并发用户数必定会对服务器产生压力的,而在线用户数只是 ”挂” 在系统上,对服务器 不产生压力,注册用户数通常指的是数据库中存在的用户数。数据库
Ø TPS:Transaction Per Second, 每秒事务数, 是衡量系统性能的一个很是重要的指标,服务器
Ø 简单例子:在术语中解释了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=
Ø 并发用户数(Vu)获取
新系统:没有历史数据做参考,只能经过业务部门进行评估。
旧系统:对于已经上线的系统,能够选取高峰时刻,在必定时间内使用系统的人数,这些人数认为属于在线用户数,并发用户数取10%就能够了,例如在半个小时内,使用系统的用户数为10000,那么取10%做为并发用户数基本就够了。
Ø TPS获取
新系统:没有历史数据做参考,只能经过业务部门进行评估。
旧系统:对于已经上线的系统,能够选取高峰时刻,在5分钟或10分钟内,获取系统每笔交易的业务量和总业务量,按照单位时间内完成的笔数计算出TPS,即业务笔数/单位时间(5*60或10*60)
针对服务器端的性能,以TPS为主来衡量系统的性能,并发用户数为辅来衡量系统的性能,若是必需要用并发用户数来衡量的话,须要一个前提,那就是交 易在多长时间内完成,由于在系统负载不高的状况下,将思考时间(思考时间的值等于交易响应时间)加到脚本中,并发用户数基本能够增长一倍,所以用并发用户 数来衡量系统的性能没太大的意义。
经过大量性能测试咱们发现不须要用上万的用户并发去进行测试,只要系统处理业务时间足够快,几百个用户甚至几十个用户就能够达到目的。另外咨询不少专家作过的性能测试项目,基本都没有超过5000用户并发。
所以对于大型系统、业务量很是高、硬件配置足够多的状况下,5000用户并发就足够了;对于中小型系统,1000用户并发就足够了。
作性能测试须要一套标准化流程及测试策略,并发用户数只是指标考虑的一个,在作负载测试的时候,通常都是按照梯度施压的方式去加用户数,而不是在没 有预估的状况下,一次加几万个用户,,交易失败率很是高,响应时间很是长,已经超过了使用者忍受范围内,这样作没有多大的意义,这就比如“有多少钱能够干 多少事”同样,须要选择相关的策略。
从下图对比项能够看出,PTS比Loadrunner(LR)更能让客户接受。
方向 | 对比项 | Loadrunner | PTS | 备注 |
基础设施 |
被测系统软硬件环境须要额外购买? | 须要 | 不须要 | 基础设施软硬件由阿里云提供,只须要购买服务 |
压力机环境须要额外购买? | 须要 | 不须要 | 基础设施软硬件由PTS提供,只须要购买服务 | |
费用 |
费用 | 很是贵 | 便宜,按需收费 | 商业化工具License很是贵 |
功能 |
功能 | 强大 | 较强大 | LR不少功能基本上用不到,不必大马拉小车 |
易用性 |
操做、学习等 | 困难 | 容易 | LR不易上手 |
稳定性 |
系统稳定性 | 较稳定 | 很是稳定 | LR压测过程当中常常出现莫名其妙错误 |
场景模拟 |
场景模拟条件 | 较真实 | 很是真实 | PTS分布在全国各地的分布式集群能够真实模拟出现实场景,而LR不太容易模拟,即便能够的话,控制机和压力机通讯常常掉线 |
Ø 系统的性能由TPS决定,跟并发用户数没有多大关系。在一样的TPS下,能够由不一样的用户数去压(经过加思考时间设置)。
Ø 系统的最大TPS是必定的(在一个范围内),但并发用户数不必定,能够调整。
Ø 建议性能测试的时候,不要设置过长的思考时间,以最坏的状况下对服务器施压。
Ø 通常状况下,大型系统(业务量大、机器多)作压力测试,5000个用户并发就够了,中小型系统作压力测试,1000个用户并发就足够了。
并发用户数:是指现实系统中操做业务的用户,在性能测试工具中,通常称为虚拟用户数(Virutal User)。
并发用户数和注册用户数、在线用户数的概念不一样,
并发用户数必定会对服务器产生压力的,
而在线用户数只是 ”挂” 在系统上,对服务器不产生压力,
注册用户数通常指的是数据库中存在的用户数。
TPS:Transaction Per Second, 每秒事务数, 是衡量系统性能的一个很是重要的指标。
做者认为如今不少从业人员在作性能测试时,都错误的认为系统能支撑的并发用户数越多,系统的性能就越好。要理解这个问题,
首先须要了解TPS和并发用户数之间的关系:
TPS就是每秒事务数,可是事务是基于虚拟用户数的,假如1个虚拟用户在1秒内完成1笔事务,那么TPS明显就是1;若是 某笔业务响应时间是1ms,那么1个用户在1秒内能完成1000笔事务,TPS就是1000了;若是某笔业务响应时间是1s,那么1个用户在1秒内只能完 成1笔事务,要想达到1000TPS,至少须要1000个用户;所以能够说1个用户能够产生1000TPS,1000个用户也能够产生1000TPS,无 非是看响应时间快慢。
也就是说,在评定服务器的性能时,应该结合TPS和并发用户数,以TPS为主,并发用户数为辅来衡量系统的性能。若是必需要用并发用户数来衡量的 话,须要一个前提,那就是交易在多长时间内完成,由于在系统负载不高的状况下,将思考时间(思考时间的值等于交易响应时间)加到脚本中,并发用户数基本可 以增长一倍,所以用并发用户数来衡量系统的性能没太大的意义。
做者最后作了综述,他认为在性能测试时并不须要用上万的用户并发去进行测试,若是只须要保证系统处理业务时间足够快,几百个用户甚至几十个用户就可 以达到目的。据他了解,不少专家作过的性能测试项目基本都没有超过5000用户并发。所以对于大型系统、业务量很是高、硬件配置足够多的状况下,5000 用户并发就足够了;对于中小型系统,1000用户并发就足够了。
性能测试须要一套标准化流程及测试策略,在实际测试时咱们还须要考虑其它方面的问题,好比如何模拟成千上万来自不一样地区用户的访问场景、如何选用合适的测试软件。性能测试对一些小的团队来讲并不是易事,不过前段时间阿里云发布了性能测试服务PTS,PTS能够帮助开发者经过分布式并发压力测试,模拟指定区域和指定数量的用户同时访问,提早预知网站承载力。这就是云计算给咱们带来的便利。