如何找到并发数、平均响应时间、tps的最佳平衡点?
目录
如何找到并发数、平均响应时间、tps的最佳平衡点?
1、先回顾下基础,性能测试常用的指标有三个:并发、响应时间、tps
- 并发:跑道里参加赛跑的人数(这里的并发是广义的并发,即同一个时间段内对系统发起的请求数量)
- 响应时间:也就是平均每个事务的处理时间
- tps:每秒处理的事务数
2、需求指标:分为单指标和多指标
- 单指标:一般是单测试tps,或者根据并发测试响应时间,或者根据响应时间测试并发,只考虑单指标的很少
- 多指标:要同时考虑多个指标,比如tps + 响应时间(<1s)
3、 找到这三个指标同时最佳值的点,
不能只追求并发数大,而忽略tps,所以,这是一个多指标性能需求,假设是这样的:要求响应时间1秒以内,并发数要尽可能的多,tps要尽可能的大。(基础篇中提到的拐点)
是不是依旧有点懵逼?先画一个简单的示意图,方便大家理解(随手画的,大家能理解就ok):
- 随着并发数增加,响应时间肯定是越来越高,所以,上面红线是响应时间;
- 随着并发数增加,tps是先升高到峰值,然后下降(也可能是一直平稳,或者平稳一段时间再下降),所以,上面蓝线是tps;
4、该怎么去找这个最佳平衡点呢?
- 尽可能多的做不同并发数下的压测,记录下响应时间(1s以内)和最大tps,当然,服务器端,各个服务器的资源利用率在可接受范围内(每个公司不一样,一般是85-90%);
- 然后根据获取到的不同并发下的指标数据(并发数、tps、响应时间),画出上图,关注右侧的交点,即tps下降的地方和响应时间的交点,这个点的tps最大,如果响应时间在1s以内,此时并发数也是比较大的,这个点就可以认为是三个指标都不错的平衡点(当然,我这里把tps放在第一位优先考虑了,这个就看大家最在乎哪个指标了,排个优先级);如果响应时间大于1s,最佳平衡点就往左找,找到响应时间为1秒的点,此时对应的tps和并发值,就是最佳平衡点。总之,测试采样越多,获取的平衡点就越准确。
- 另外,如果是用loadrunner或jmeter作为并发工具,并发过程中是可以增加或者减少并发用户数的,就不用必须压完一次,再调整并发数继续压,但是,并发过程中调整了并发数,还是要尽可能跑久一点,比如10-15min。
篇外话题: TPS和QPS的区别
TPS:Transactions Per Second
意思是每秒事务数,一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。
每个事务包括了如下3个过程:如果每秒能够完成N次这三个过程,tps就是N;有时,可能会将多个请求定义为一个事务,那么,完成一次这几个请求,就算一个tps。
- 用户请求服务器
- 服务器自己的内部处理(包含应用服务器、数据库服务器等)
- 服务器返回给用户
QPS:Queries Per Second
意思是每秒查询率,是一台服务器每秒能够响应的查询次数,是对一个特定的查询服务器(比如是读写分离的架构,就是读的服务器)在规定时间内所处理流量多少的衡量标准
区别
- 如果对一个页面请求一次,形成一个tps,但一次页面请求,可能产生多次对服务器的请求(页面上有很多资源,比如图片等),服务器对这些请求,就可计入“qps”之中;
- 但是,如今的项目基本上都是前后端分离的,性能也分为前端性能和后端性能,通常默认是后端性能,即服务端性能,也就是对服务端接口做压测
- 如果是对一个接口(单场景)压测,且这个接口内部不会再去请求其它接口,那么tps=qps,否则,tps≠qps
- 如果是对多个接口(混合场景)压测,不加事务控制器,jmeter会统计每个接口的tps,而混合场景是要测试这个场景的tps,显然这样得不到混合场景的tps,所以,要加了事物控制器,结果才是整个场景的tps。
- jmeter聚合报告中,Throughput是用来衡量请求的吞吐量,也就是tps(单接口统计)
支持原创:转自-->https://www.cnblogs.com/uncleyong/p/11059556.html
https://www.cnblogs.com/uncleyong/p/11543488.html