问答 请教全链路压测的概念

陈子昂 · July 29, 2017 · Last by 陈子昂 replied at July 31, 2017 · 3013 hits

请求概念

全链路这个词在游戏产业还是比较陌生的。全链路只指所有路径执行压测还是指等价类划分后的业务执行一次,覆盖核心业务点?
一般 1 款游戏,协议有上百组。带往返的占 80% 左右,部分会对不同硬件场景产生压力的。
这里不细说,比如某些业务只走非关系型数据库,会缓存起来,等玩家下线后才存一次。有些是存关系型数据库,会实时存或者缓存。

场景问题

1 个场景举个例子,一个商店刷新业务,整个流程是这样的。
步骤 1:先请求 c->s 进入,请求商店 start -> s2c 商店列表下发 end
步骤 2:->c 对应商店 lab(纯客户端切换,假设是步骤 1,一次性下发所有的商店信息)
步骤 3:->c2s 刷新协议 start->s2c-刷新协议 end
这里也就是只有 2 组。因为商店可能有多个商店,假定为 6 个,1 个 lab 刷新不干扰其他商店。

最终问题

请问全链路压测 case 是 6 个商店 2*6(全部商店)?还是只压 2*1(其他某个商店,策略是选择列表返回较多的)?
这个例子可能不太合适,但选择 1 个比较简单的协议做例子,有知道的可以帮忙回答下,谢谢了。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 16 条回复 时间 点赞

持续关注,我也不清楚

关注最新动态,了解新技能

mark 一下,同样不清楚细节。 访问密集型业务的性能测试我是业余的。不过以前就听说过全链路的概念

全链路是环境要求,一般指完全引入相关联的系统 真实模拟线上硬件环境。
全链路功能测试 ,全链路性能测试,全链路并不影响你的测试策略,只影响你的环境要求

按真实流量在生产环境进行,涉及到所有场景都要模拟。

心向东 回复

好的,谢谢,游戏产业上线硬件架构和数量 在压测环境内都是一样的,因为比较少的关系吧,就算用到集群的也很少。

徐晓东 回复

你好,意思是全协议执行吗?有一个疑问,如果是压力测试的话,所有协议跑一次,会不会影响到 那些性能要求比较大的协议 执行次数变少啊。

提前对双 11 进行模拟听起来就不简单,毕竟双 11 的规模和复杂性都是空前的,要将双 11 提前模拟出来,难度可想而知:

  1. 跟双 11 相关的业务系统上百个,并且牵涉到整条链路上所有的基础设施和中间件,如何确保压测流量能够通畅无阻,没有死角?
  2. 压测的数据怎么构造(亿万级的商品和用户),数据模型如何与双 11 贴近?
  3. 全链路压测直接在线上的真实环境进行双 11 模拟,怎么样来保障对线上无影响?
  4. 双 11 是一个上亿用户参与的盛大活动,所带来的巨大流量要怎么样制作出来?

2013 年 8 月中旬,当时高可用架构团队的负责人叔同接下了这个巨大的挑战:打造一套全链路压测平台。平台需要在 2013 年的双 11 之前完成开发上线,错过了这个时间点,我们就必需再等一年,从立项到双 11,留给我们的时间只有短短两个多月,时间非常紧,我们需要在这么短的时间里完成一系列历史级的挑战。2013 年阿里巴巴开始搬到我们新的西溪园区,其它同学都是搬到新工位,全链路压测项目组直接搬到了项目室,进行闭关攻坚。

http://jm.taobao.org/2017/03/30/20170330/

恒温 回复

淘宝单位吞吐量级估计比我们最大时还高几百倍吧,架构上也是很大差别的,压测也难很多倍
我们本来很多地方(token,部分回包)也是用 mock 的,后面放弃了,除了硬件 ID,实在没多少机器码情况下。
问题是单链路和全链路 假设在架构简单的情况下,二者差异在哪里。
之前压测的权重执行策略也会根据之前线上数据的协议接口访问量来设置,但是 BI 的步骤是不是有更多不一样的地方呢?

从看的文章和听的演讲理解,目的是对生产环境产生压力并观测数据,为了不对真实用户产生影响,有一些关键问题要处理:

  1. 写数据如何处理
  2. 不造成生产环境不可用
  3. 读时效性数据

至于其他方面,没看出有什么区别。如果没有技术债等原因产生的部署困难,部门隔离等组织原因。对测试环境产生压力也是要尽量实现 “全链路” 什么的。如果理解的对,大概是是 “全链路压测” 这个名字起得不好。

我理解是 用线上真实数据在生产环境上回放流量 或加倍回放。

关注学习

陈子昂 #13 · July 30, 2017 Author

流量回放 看起来很美好。实际上收集流量回放在整理成一串的 case 有点麻烦。

陈子昂 #14 · July 30, 2017 Author
黑水 回复

感谢回答,这里面感觉会因为业务复杂度越大,对应压测模型和数据那边执行起来 需要更多组去比对。游戏公司一般没有什么数据部门,或者也不会提供技术压测的,只是运营数据分析,不包含路径。

个人理解:传统性能测试更多的是以事物为核心,更多的是由单个或者多个事物构成业务场景进行压测。
全链路压测更多的是以请求为核心,通过引流等方式进行场景的模拟进行压测,更多的适用于业务链路较长的交易。

陈子昂 #16 · July 31, 2017 Author
莫离 回复

谢谢。

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up