架构与思维:设计容量,到底有多重要?

点击上方"数据与人",右上角选择“设为星标”

单位每年都会举行运动会,有一个2000m长跑的项目,大约每年报名人员为男选手40人,女选手20人,只有一条橡胶跑道。一次比赛10人齐跑,所以至少需要6场比赛。

现在我们预估下耗时:

1、60人/10人每场=6场,至少需要举行6场

2、总耗时=6场*0.5h=3h

所以每年把这个比赛安排在下午3点到6点,是最后一个比赛项目,晚上7点举行颁奖晚会。这个预估容量也算合理。

何为设计容量,从技术上说就是运用一些策略对系统容量进行预估的过程。容量设计是架构师必备的技能之一。

他要求我们分析系统设计容量要求,尽可能给出具体数据描述的:数据量、并发量、带宽、注册用户规模、活跃用户规模、在线用户规模、消息长度,图片大小、网盘空间容量,内存CPU容量等。

下面的内容,我们以并发为例子,看看看具体的分析过程。

TPS(TransactionsPerSecond):每秒事务数

并发数:并发数是指系统同时能处理的请求数量,这个也是反应了系统的负载能力。

峰值QPS计算:

PV(PageView):页面访问量,即页面浏览量或点击量,用户每次刷新即被计算一次

UV(UniqueVisitor):独立访客,统计1天内访问某站点的用户数(以cookie为依据)

QPS(每秒查询数)、TPS(每秒事务数)是吞吐量的常用量化指标,另外还有HPS(每秒HTTP请求数)。

主要在三种业务场景下需要及时考虑对系统容量进行评估。

1、临时的流量变化:比如618、双11,新年大促搞活动等场景,预估我们的流量会大涨,甚至到原来的数倍。这时候要做好应对的措施。

2、初始系统容量评估:假设我们开发了某个系统,这个系统初始上线,我们预估他的容量和负载会是多少。

3、容量基数的变化:比如某个系统,他的功能模块越来越多,数据流量越来越大,日活指数越来越高,迎来了第二波的增长曲线。我们原来定好的系统容量渐渐的不满足我们的需求,这时候我们也要重新评估和扩容。

我们系统容量评估包括数据量、并发量、带宽、CPU、MEMORY、DISK等。以并发量为案例,我们来说明系统容量评估的方法和步骤。

分析可能的日访问量,一般系统系统都会提供比较真实的访问量数值,基于此,我们需要评估一个活动的访问量;如果是一个新上线的系统,我们也要评估可能的PV、UV值。

产品、运营部门也需要给出可能的访问预期值。

举个例子:

我们活动期间(9点~10点)会推送2000W的应用消息,假设用户实际点进去查看的比列为1/10,那么这个活动期间(1小时)新增的访问量就有2000W*1/10=200W

我们在做系统容量规划时,不仅仅是考虑平均QPS,最重要的是要承受住高峰区间的QPS,这个数据可以根据业务流量监控的曲线和28法则来评估,我们来看下具体是怎么做的

3.1业务流量监控的曲线

以下面这个云系统作为例子:

日均QPS为2900,业务访问趋势图如下图,我们来对峰值QPS做一下预估

从图中可以看出,峰值QPS大概是均值QPS的2.58倍,日均QPS为2900,于是评估出峰值QPS为2900*2.58=7482。

这种是日常流量情况,如果遇到很特别的业务,比如竞拍\抢订\秒杀情况,流量幅度还是比较大的。

3.2使用二八法则计算

我们在一个系统上线前,一般来说是需要进行压力测试,了解她实际的极限值在哪个地方,以我们上面流量图为例子(日平均QPS为2900,峰值QPS为7500),这个系统的架构可能是这样的:

1、经由APP和Web的的请求,会经过Nginx均衡到多台Web站点上去。

2、Web集群会调用并落地到Service集群上

3、Service集群向数据层请求数据,正常情况下其中90%会落到Cache集群中

4、Cache集群中不存在(假设10%),会进入DB集群去访问数据库。

我们通过压测数据发现,web层是瓶颈,tomcat压测单个实例只能支持2500的QPS。

Cache集群和DB集群足够强悍,能够轻松应对峰值7500的QPS,按比例分别是7500*0.9=6750和7500*0.1=750.

所以我们得到了web单实例极限的QPS是2500。这边需要下调,因为我们不建议让请求响应时长接近2S,最好是1S以内。所以下调至2000。

通过上面的计算,我们已经得到了峰值QPS是7500,单个实例能够顺畅承载QPS是2000,那么Web集群中至少有4个实例能够承接这样的请求洪峰。

除此之外,其他类型的的容量预估,如数据量、带宽、CPU、MEMORY、DISK等都可以采用类似策略。

结合项目:如何计算图书系统的QPS、峰值QPS、N个实例和并发数

1、图书预定系统的并发数计算:

即(1500000*80%)(32400*20%)=600000/6480≈185/秒

1.4、利用343估算法判定154,向上矫正为200

Pessimism悲观

30%

80

Normal标准

40%

100

Optimism乐观

300

系统设计容量评估时机:

系统设计容量评估的步骤:

1、分析日总访问量:产品、运营的评估和线上数据的收集

3、评估高峰区间的QPS:流量曲线计算或28法则估算

4、性能压力测试:评估实例能够承受的极限吞吐量

5、根据线上冗余度,与实际的差值进行调整,评估出能承载容量的实际结果值

显然,开头的运动会如果子报名结束后能够根据报名的人数对比,重新做容量设计,提早做好准备,情况就不会那么糟糕。

THE END
1.网站性能测试指标(QPS,TPS,吞吐量,响应时间)详解跟吞吐量有关的几个重要是:并发数、响应时间。 QPS(TPS),并发数、响应时间它们三者之间的关系是: QPS(TPS)= 并发数/平均响应时间 性能计数器 性能计数器是描述服务器或操作系统性能的一些数据指标,如使用内存数、进程时间,在性能测试中发挥着“监控和分析”的作用,尤其是在分析统统可扩展性、进行新能瓶颈定位时https://cloud.tencent.com/developer/article/1080403
2.响应时间)的关系响应时间,并发线程。tps之间的关系系统吞吐量几个重要参数: TPS:每秒钟事务数量 并发数: 系统同时处理的事务数 响应时间:一般取平均响应时间 并发用户数:是指现实系统中操作业务的用户,在性能测试工具中,一般称为虚拟用户数(Virutal User)。 并发用户数和注册用户数、在线用户数的概念不同, https://blog.csdn.net/houshuai880613/article/details/103310714
3.性能指标学习TPS响应时间并发用户数1. 背景 在做性能测试的时候,很多人都用并发用户数来衡量系统的性能,觉得系统能支撑的并发用户数越多,系统的性能就越好;对TPS不是非常理解,也根本不知道它们之间的关系,因此非常有必要进行解释。 2. 术语定义 ? 并发用户数:指的是现实系统中操作业务的用户,在性能测试工具中,一般称为虚拟用户数(Virutal Userhttps://www.pianshen.com/article/7158495117/
4.测试面试题(一)性能指标:TPS(QPS),响应时间,并发数之间的关系所以推算他们之间的关系:QPS(TPS)= 并发数/平均响应时间 或者 并发数 = QPS*平均响应时间 其实仔细想一下这个题目并不是很难,主要的概念要清晰,还有一个很重要的点,一定要自己动手,可能很多测试同学和我一样理论看了一大推感觉自己什么都懂一点,可涉及到具体问题却不知如何下手~ https://www.jianshu.com/p/f769f870db87
5.TPS(吞吐量)QPS(每秒查询率)并发数RT(响应时间)是什么意思2. 吞吐量(Throughput) 吞吐量是指系统在单位时间内处理请求的数量。对于无并发的应用系统而言,吞吐量与响应时间成严格的反比关系,实际上此时吞吐量就是响应时间的倒数。前面已经说过,对于单用户的系统,响应时间(或者系统响应时间和应用延迟时间)可以很好地度量系统的性能,但对于并发系统,通常需要用吞吐量作为性能指标。https://www.jb51.net/article/180239.htm
6.性能测试概念性能测试是软件测试的一种类型,旨在评估系统、应用程序或服务在特定负载条件下的性能表现。 它涉及模拟真实世界中的用户行为、请求和负载,以便测量系统在不同条件下的响应时间、吞吐量、并发用户数和资源利用率等性能指标。 性能测试相关概念 并发:并发是指虚拟并发用户数,从业务角度,也可以理解为同时在线的用户数。 https://maimai.cn/article/detail?fid=1840466462&efid=Kxp6e2xZQl_NLQ2Rwj3tLA
7.性能测试参数及计算方式wx64bf851b4b711的技术博客在性能测试中,有时可以认为TPS、QPS是一样的。 1.QPS 每秒钟请求数量,也叫每秒钟查询率,是对一个查询服务器在规定时间内所处理流量多少的衡量标准。 2.请求并发数 系统同时处理的请求数。 3.响应时间 一般取平均响应时间。 4.计算公式 QPS=请求并发数/平均响应时间 https://blog.51cto.com/u_16204740/9903855
8.TPS和响应时间到底是什么关系?问题:TPS和响应时间到底是什么关系? 答: 要把这个问题扯清楚,我们首先要知道TPS是代表什么? TPS代表服务器处理请求的能力。一般是指服务器每秒能处理的请求数。 那么怎么得出服务器每秒能处理的请求数呢? 我们进行性能测试时,需要模拟用户向服务器发送请求,如果服务器处理请求的能力越快,那么就是响应时间越快,所以http://hz.itheima.com/news/20200714/174047.html
9.如何优化服务器磁盘性能以提升整体系统效率?服务器磁盘性能 一、背景介绍 在现代计算环境中,服务器的磁盘性能直接影响系统的整体效率和用户体验,评估和管理磁盘性能是确保服务器高效运行的关键步骤,本文将深入探讨服务器磁盘性能的各个重要方面,包括其影响因素、评估指标及优化方法。 二、磁盘性能重点性能指标 https://shuyeidc.com/wp/23577.html
10.大厂性能测试监控指标及分析调优指南其他实例文章在本文中,我们讨论了大厂性能测试监控指标及分析调优流程。我们介绍了常见的监控指标,如响应时间、并发用户数、系统吞吐量、错误率、内存占用率和CPU占用率。然后,我们展示了一个使用Python语言编写的性能测试监控指标及分析调优流程示例,包括数据收集、数据分析、优化方案制定和实施和验证等步骤。 http://www.shili8.cn/article/detail_20002682395.html