并发用户数与TPS之间的关系
并发用户数:指的是现实系统中操作业务的用户,在性能测试工具中,一般称为虚拟用户数(Virutal User),注意并发用户数跟注册用户数、在线用户数有很大差别的,并发用户数一定会对服务器产生压力的,而在线用户数只是 ”挂” 在系统上,对服务器不产生压力,注册用户数一般指的是数据库中存在的用户数。
TPS:Transaction Per Second, 每秒事务数, 是衡量系统性能的一个非常重要的指标,
TPS和事务响应时间的关系
例子:一个高速路有10个入口,每个入口每秒钟只能进1辆车
请问1秒钟最多能进几辆车?
TPS=10每辆车需要多长时间进行响应?
reponse time = 1改成20辆车,每秒能进几辆?每辆车的响应时间是多长?
TPS = 10,reponse time = 1入口扩展到20个,每秒能进几辆?每辆车的响应时间是多长?
TPS = 20,reponse time = 1看看,现在TPS变了,响应时间没变,TPS和响应时间有关系吗?
没关系如何理解?
TPS和响应时间在理想状态下都是额定值,把入口看成线程池,如果有20个入口,并发数只有10的时候,TPS就是10,而响应时间始终是1,说明并发数不够,需要增加并发数达到TPS的峰值。同样是20个入口,如果并发数变成100的话,TPS和响应时间会怎么样呢?
并发数到100的时候,就会出现堵车,堵车了平均每个车过去的时间就长了,把100个车按照20一份分成5份,第5份的等待时间就是最长的,从等待开始到这个车进去,实际花费了5秒,那100辆车都过去的响应时间就是(5+4+3+2+1)/5=3,平均的TPS就是(20/1+20/2+20/3+20/4+20/5)/5=8.89(我怎么感觉应该是100/(5+4+3+2+1)=6.67啊!)由此可知,TPS和响应时间宏观上是倒数关系,但是两者实际上木有直接的关系的,在上例中,系统只存在20个线程,100的并发就会造成线程的等待,引起平均响应时间从1秒增加到3秒,TPS从20下降到9,TPS和响应时间都是单独计算出来的,并不是互相算出来的!
同样可知,在并发量保持不变的情况下,提高TPS的手段有几种?
A、增加线程池的数量(入口)
B、降低每辆车入关的时间(也就是提高单个线程的处理效率)从TPS和response time的定义查看这2者的区别?
TPS = 在场景或者灰化步骤运行的每一秒钟中,每个事务通过、失败以及停止的次数.
也就是说,TPS = 总的通过、失败的事务总数/整个场景的运行时间;
reponse time = 每个事务完成实际需要的时间/事务处理数目
因此,这2个东西压根就是木有关系的!
如何评估系统的性能是否稳定
一个正常的系统,在不断加压的过程,应该经历下面五个阶段:
Ø 第一阶段:并发用户逐渐增加,系统的TPS(每秒处理事务笔数)逐步增大,直到达到最大值,这一阶段事务的响应时间不会有太大变化,会非常稳定;
Ø 第二阶段:并发用户继续增加,TPS基本维持在最大值不变,但响应时间将会逐步变长。
Ø 第三阶段:并发用户继续增加,TPS将会有少量下降(20%以内),但是决不能快速急剧下降,响应时间仍会逐步变长。
本阶段可以拒绝服务,但是不能宕机。
Ø 第四阶段:并发用户逐步减小,系统处理能力开始得到恢复,TPS能够逐步恢复到之前的最大值,响应时间开始变短;
Ø 第五阶段:压力逐步降为零,TPS继续降低,响应时间继续变快,所有占用的CPU/内存/IO资源得到释放。
http://www.51testing.com/html/66/587566-855826.html
http://www.aliyun.com/product/pts
http://hitest.aliyun.com/front/share/searchShare.htm?spm=0.0.0.0.muWanp&catId=3