这里是Z哥的个人公众号
每周五11:45 按时送达
当然了,也会时不时加个餐~
我的第「85」篇原创敬上
流量 / 单机性能 = X台机器

UV(Unique Vistor):一段时间内的访客数,同一访客在该时段内的多次访问只计一次。
PV(page view):一段时间内的页面浏览次数,同一用户多次打开同一页面也继续累计。
响应时间/系统延迟(Latency):系统处理一个请求/任务的延迟(请求处理时间+数据传输时间)
吞吐量(Throughput):一个单位时间内可以处理的请求数。也就是该单位时间内发起的请求总数/平均响应时间,请求数可以是一次pv、也可以是一次rpc调用等等。
TPS(Transaction Per Second):可以理解为,单位时间是“秒”的「吞吐量」。
硬件/操作系统层面的开销。如磁盘I/O、网络I/O,CPU的多线程切换等等。
进程运行的开销。如代码逻辑啊、锁啊等等。
多个进程之间的通信开销。rpc框架、数据库访问框架、redis/memcached访问SDK、MQ访问SDK等等。
第二步,围绕这个业务指标,对所涉及的相关技术接口制定性能指标。
这样,在压测结束后,你就可以将loadrunner中所记录的发起请求的数量,对比api接口采集到的数据,就能得到每个接口与业务流量之间的关系。顺带也能看到在低压力下的错误率、平均响应时间、tp95、tp99等等的情况。
第三步,借助过去的经验对标准进行校准。
真实的生产环境是错综复杂的,因为一个api接口往往会被众多地方调用。
那么做校准就是为了让我们的预估更接近真实的生产环境一些。
如果有过去成功支撑的案例数据就最好了。用当时的UV、PV数据、接口与业务量比例对比当前的业务预估的UV、PV、接口与业务量比例进行同比例的调整。
可以得出下面这样的公式:
应满足的TPS = 成功时的TPS * (当前预估业务流量 / 成功时业务流量) * (当前业务接口比例/成功时业务接口比例)。
没有成功案例的话,可以通过分析数据库中任何带有“时间”字段的数据,找到其中已知可承受的最高并发值,以及对应的时间点。(简单粗暴的方式可以groupby“时间字段”)
再反向去找对应这个时间节点的PV、UV。
然后再与这次的业务指标预估进行对比,看下差异比例。
应满足的TPS = 历史最高TPS(不管抗没扛住) * (当前预估业务流量 / 历史最高TPS时业务流量) * (当前业务接口比例 / 历史最高TPS(不管抗没扛住) 时业务接口比例)。
这样也可以推算出一个「应满足的TPS」。
应满足的TPS = 该TPS * (当前预估业务流量 / 某时段业务流量) * 当前业务接口比例



得到业务的流量指标
通过调用比例获得相关接口的性能指标
根据历史数据进行校准
根据衰减曲线得到预估的节点数量
预留一些弹性空间
推荐阅读:
分布式系统关注点——360°的全方位监控
分布式系统关注点——深入浅出「异步」
原创不易,如果你觉得这篇文章还不错,就「在看」或者「分享」一下吧。鼓励我的创作 :)
如果有希望我写一下什么主题的话,欢迎在后台给我留言哦~
可以试试点击「阅读原文」