- 测试性能模型分析
1、曲线拐点模型
这个图中X轴为并发用户数,随着并发用户数的增大,二维空间被划分为三个区域:轻压力区、重压力区和拐点区。
Y轴表示资源利用率、吞吐量和响应时间,应该以X为自变量来逐一分析这三个指标的变化,再综合分析。
①随着并发用户数的增加,资源利用率逐步上升,最后达到饱和。
②随着并发用户数的增加,吞吐量增加。进入重压力区后逐步平稳,达到拐点区后急剧下降,说明系统已达到处理极限。
③随着并发用户数的增加,在轻压力区的响应时间变化不大,比较平缓,进入重压力区后呈现增长的趋势,最后进入拐点区后倾斜率增大,响应时间急剧增加。
随着并发用户数增加,资源利用率和吞吐量增加,说明系统正在积极处理,所以响应时间增加得并不明显,处于比较好的状态。但是随着并发用户数的增加,压力也在持续地增大,吞吐量与资源利用率都达到了饱和,随后吞吐量急剧下降,造成响应时间急剧增长。轻压力区与重压力区的交界点是系统的最佳并发用户数,因为各种资源都利用充分,响应也很快;而重压力区与拐点区的交界点是系统的最大并发用户数,因为超过这个点,系统性能将会急剧下降甚至崩溃。
2、地铁模型分析
模拟地铁的场景来分析性能。
先做出以下3个假设
- 某地铁进站只有3个刷卡机
- 人少的情况下,乘客能很快进站,假设进站只需要1s
- 乘客如果等待超过30min就会暴躁、唠叨甚至放弃(怎么感觉有点像小时候玩的餐厅小游戏啊,哇哈哈~)
最初会出现如下3种场景:
- 只有1名乘客进站,可以在1s内完成,且只利用了一台刷卡机,剩余两台等待着。
- 只有2名乘客进站,可以在1s内完成,且只利用了两台刷卡机,剩余一台等待着。
- 只有3名乘客进站,仍能在1s内完成,此时资源得到充分利用。
随后新场景出现了:
- 来了6名乘客,因为A、B、C先到,所以D、E、F要先排队等候,此时进站时间为2s。(相当于“响应时间”增长)
- 来了9名乘客,则其中有3名的“响应时间”为1s,有3名的“响应时间”为2s(进站1s+等待1s),还有3名的“响应时间”为3s(进站1s+等待2s)
- 来了10名乘客,则必有1名的“响应时间”为4s,以此类推,随着人流涌入,将达到乘客的忍耐极限。
- 假设地铁站正好在火车站,每名乘客都拿着大小不一的包,有的因为包太大卡在刷卡机那导致堵塞,进站时间就有不一样了。
那么,如果拿包的乘客可以通过加宽的刷卡机快速进站,就能改善堵塞的问题了。如果乘客越来越多,3台刷卡机已经无法满足需求,那么为了减少人流的积压,可以多开几个刷卡机,增加进站的人流和速度(提升TPS、增大连接数)。
还有1个大BOSS:
- 到了上班高峰时间,乘客数量上升太快,现有的进站措施已经无法满足,单单增加刷卡机已经不行了。此时的乘客相当于“请求”,乘客不是在地铁站进站排队,就是在站台排队等车,已经造成严重的“堵塞”。
此时,增加发车频率(加快应用、数据库的处理能力)、增加车厢数量(增加内存、增大吞吐量)、增加线路(增加服务的线程)、限流、分流等多种措施就应需而生了。