( 转)性能测试--地铁模型分析

地铁模型分析

  和绝大部分人一样,小白每天都要乘坐地铁上下班,那么就拿地铁来分析,再次深刻理解下性能。早上乘坐地铁上班,最典型的就是北京地铁1、5、10、13号线等,人多得简直没法形容!为了方便理解分析,先做如下假设。

  • 某地铁站进站只有3个刷卡机。
  • 人少的情况下,每位乘客很快就可以刷卡进站,假设进站需要1s。
  • 乘客耐心有限,如果等待超过30min,就会暴躁、唠叨,甚至选择放弃。

按照上述的假设,最初会出现如下的场景。

  • 场景一:只有1名乘客进站时,这名乘客可以在1s的时间内完成进站,且只利用了一台刷卡机,剩余2台等待着。
  • 场景二:只有2名乘客进站时,2名乘客仍都可以在1s的时间内完成进站,且利用了2台刷卡机,剩余1台等待着。
  • 场景三:只有3名乘客进站时,3名乘客还能在1s的时间内完成进站,且利用了3台刷卡机,资源得到充分利用。

  想到这里,小白越来越觉得有意思了,原来技术与生活这么息息相关,真的可以快乐学习哦。随着上班高峰的到来,乘客也越来越多,新的场景也慢慢出现了。

  • 场景四:A、B、C三名乘客进站,同时D、E、F乘客也要进站,因为A、B、C先到,所以D、E、F乘客需要排队,等A、B、C三名乘客进站完成后才行。那么,A、B、C乘客进站时间为1s,而D、E、F乘客必须等待1s,所以他们3位在进站的时间是2s。

通过上面这个场景可以发现,每秒能使3名乘客进站,第1s是A、B、C,第2s是D、E、F,但是对于乘客D、E、F来说,“响应时间”延长了。

  • 场景五:假设这次进站一次来了9名乘客,根据上面的场景,不难推断出,这9名乘客中有3名的“响应时间”为1s,有3名的“响应时间”为2s(等待1s+进站1s),还有3名的“响应时间”为3s(等待2s+进站1s)。
  • 场景六:假设这次进站一次来了10名乘客,根据上面的推算,必然存在1名乘客的“响应时间”为4s,如果随着大量的人流涌入进站,可想而知就会达到乘客的忍耐极限。
  • 场景七:如果地铁正好在火车站,例如,著名的北京西站、北京站。每名乘客都拿着大小不同的包,有的乘客拿的包太大导致卡在刷卡机那(堵塞),这样每名乘客的进站时间就会又不一样。

  小白突然想到,貌似很多地铁进站的刷卡机有加宽的和正常宽度的两种类型,那么拿大包的乘客可以通过加宽的刷卡机快速进站(增加带宽),这样就能避免场景七中的现象。

  • 场景八:进站的乘客越来越多,3台刷卡机已经无法满足需求,于是为了减少人流的积压,需要再多开几个刷卡机,增加进站的人流与速度(提升TPS、增大连接数)。
  • 场景九:终于到了上班高峰时间了,乘客数量上升太快,现有的进站措施已经无法满足,越来越多的人开始抱怨、拥挤,情况越来越糟。单单增加刷卡机已经不行了,此时的乘客就相当于“请求”,乘客不是在地铁进站排队,就是在站台排队等车,已经造成严重的“堵塞”,那么增加发车频率(加快应用、数据库的处理速度)、增加车厢数量(增加内存、增大吞吐量)、增加线路(增加服务的线程)、限流、分流等多种措施便应需而生。

  分析到这里,小白可以熟练地把性能指标与场景结合运用起来了,初步学习成果还是不错的。

原文:http://book.51cto.com/art/201502/465238.htm

时间: 2024-10-09 22:13:17

( 转)性能测试--地铁模型分析的相关文章

( 转)性能测试--地铁模型分析

( 转)性能测试--地铁模型分析 地铁模型分析 和绝大部分人一样,小白每天都要乘坐地铁上下班,那么就拿地铁来分析,再次深刻理解下性能.早上乘坐地铁上班,最典型的就是北京地铁1.5.10.13号线等,人多得简直没法形容!为了方便理解分析,先做如下假设. 某地铁站进站只有3个刷卡机. 人少的情况下,每位乘客很快就可以刷卡进站,假设进站需要1s. 乘客耐心有限,如果等待超过30min,就会暴躁.唠叨,甚至选择放弃. 按照上述的假设,最初会出现如下的场景. 场景一:只有1名乘客进站时,这名乘客可以在1s

性能测试负载模型(五)

我们上一篇文章说到了性能测试负载模型落地时的建模方法,这里我们先就第一种也是最常用的一种方法说起: 原始数据分析法 业务场景建模主要就是说明用户如何使用系统,因此根据系统使用的原始数据也就是日志进行分析建模是最有效最准确的方法.所谓日志就是指用户操作系统的痕迹,根据记录信息时的不同视角,一般分为两类:一类视角是基于用户,我们称之为操作日志,这类日志主要以用户为观察实体,记录用户从登录系统到离开系统的每一个动作:另一类视角基于系统,我们称之为访问日志,这类日志主要为应用系统为观察实体,记录系统的输

性能测试负载模型(十)

性能测试从测试目的来说分为三类:评估型测试.确认型测试.调优型测试. 评估型测试主要是在评估某种条件下运行的性能状况.如测试系统在不同环境下的性能状况,随用户数量的变化或者数据量的变化情况下软件的性能变化状况.评估型测试往往并没有特别明确的通过目标,而是根据测试结果的分析和对比给出本次评估内容的一些结论. 确认型测试主要是为了验证系统是否满足规定的性能指标要求.通常测试目的中都或有测试系统在某一条件下的平均响应时间,或者吞吐率,或者并发用户数等是否满足规定的要求.确认型测试一定有很明确的通过标准

性能测试负载模型(四)

我们前面说了性能测试负载模型的概念,那么在实际落地的时候,到底该如何进行负载模型的建模呢,这里大概总结一下我认为的建模方法: 在进行场景建模的时候,最方便也是最常用的就是项目已经上线运行过一段时间,有足够过的日志作为数据源来进行分析,这类情况下一般都有比较固定的方法通过对日志进行分析来获得准确的模型数据:另一种是准备上线的项目,这类项目还没有任何日志可供参考,这种情况下一般都是与已在运行的近似项目进行类比,找到最接近的项目来进行仿真模拟:最后一种则是新业务或者新产品,既没有历史数据也没有类比的项

MyCat线程模型分析

参考MyCat权威指南,对MyCat-Server里面的线程模型做简要分析: 1. 线程模型图 根据MyCat权威指南,做出以下线程模型图: MyCat的线程模型主要分为三部分(: 网络通讯线程.业务线程和定时任务线程,下面分别介绍这些线程的使用: [温馨提示] 这里排除JVM自身使用的线程,只关注MyCat服务所使用的线程,如果需要详细了解MyCat里面使用的所有线程,请参考<MyCat权威指南>-> 开发篇 -> MyCat线程模型分析 2. 网络通讯线程 MyCat-Serv

javascript内存模型分析猜想

/* * 这里我是利用分析java内存模型的方法来猜想javascript的内存模型, * 由于没有看到国内有关于分析javascript的书籍,但是可以借鉴java的 * 内存模型结构来帮助理解javascript的内存模型中的原型机制,下面先 * 给出一个简单的原型例子 * */ "use strict"; function PrototypeModel(name,author,time){ } PrototypeModel.prototype.name = "Proto

数据挖掘应用案例:RFM模型分析与客户细分(转)

正好刚帮某电信行业完成一个数据挖掘工作,其中的RFM模型还是有一定代表性,就再把数据挖掘RFM模型的建模思路细节与大家分享一下吧!手机充值业务是一项主要电信业务形式,客户的充值行为记录正好满足RFM模型的交易数据要求. 根据美国数据库营销研究所Arthur Hughes的研究,客户数据库中有三个神奇的要素,这三个要素构成了数据分析最好的指标:最近一次消费(Recency).消费频率(Frequency).消费金额(Monetary). 我早期两篇博文已详述了RFM思想和IBM Modeler操作

Netty源码学习——ChannelPipeline模型分析

参考Netty API io.netty.channel.ChannelPipeline A list of ChannelHandlers which handles or intercepts inbound events and outbount operations of aChannel.ChannelPipeline implements an advanced form of theIntercepting Filter pattern to give a user full co

性能测试分层模型-选自书籍:小强软件测试疯狂讲义

百度搜索:小强测试品牌 新书推荐 本书终于在前段时间出版了,现在已经可以在各大网店购买了,搜索书名即可.书籍购买地址:https://detail.tmall.com/item.htm?id=547310727717 这里我特别提前说一句:任何东西都有一定的受众群体,世界上也没有任何东西可以让所有人100%满意.So,本书也是.只要本书中有一个篇章的内容给你带来了影响那就是这本书的价值!感谢大家的支持. 引子 我为什么会把这个话题放到最开始呢?就是因为这些年在企业工作中.在教育领域培训中接触过不