知识卡片

全链路全流量线上压测的四种手段:缩容试探、复制流量、模拟流量、流量泄洪

普通读书笔记卡

内容

线下压测因为机房资源、网络环境和线上不一致,测出来的结果需要按比例换算才能参考,误差较大,京东应对大促的压测以线上压测为主力,具体组合了四种手段。一是演练缩减服务器:线上集群本来按正常流量配置了足够的机器(比如30台),主动把集群缩容到很小的规模(比如5台),观察这个规模能不能撑住当前的真实线上流量,从而反推出单台机器能承受的临界值——这个方法的风险很直白:如果缩容后系统没扛住,整个集群会直接崩溃,但只有真正冒着这个风险去试探,才能拿到准确的临界值,业务上重视程度高到”有时候甚至会强行进行服务缩减”。二是复制流量:用TCPCopy把真实端口流量复制出来,再通过多层翻倍的方式把流量放大到压测所需要的规模。三是模拟流量:专门成立压测小组,借用类似DDoS工具的底层发包能力(发起量快、发起量大)自建压测平台,配合预先准备好的模拟数据(几万用户、商品、库存、不同促销模型)来生成流量。四是流量泄洪:先把订单人为”堵”在某个环节、不让它继续往后面密集的服务传导,堆积到几十万的量级后,选择某个时间点突然放开,通过观察放开后每分钟的实际处理能力,反推后端服务真正能承受多大的瞬时冲击。这四种手段分别针对压测的不同侧面——缩容试探关心的是”现有资源到底能扛多少”,复制和模拟流量关心的是”如何造出足够真实的压力来源”,流量泄洪关心的是”瞬时脉冲式冲击下的极限表现”——组合使用才能覆盖大促场景下真实可能出现的各种流量形态,只用其中一种很容易得出片面的容量结论。

参考来源

- 位置:《高可用架构(第1卷)》第3章《电商架构热点专题》"3.2 大促系统全流量压测及稳定性保证——京东交易架构"节,"3.2.4 应对大促的第1步:全链路全流量线上压测"(源文件:_epub-src/OEBPS/Text/Chapter3_2_5.xhtml) - 结论依据:原文分四点详细说明演练缩减服务器("将一个集群内的30台机器缩成5台,如果此时没扛住,所有的机器就会崩溃")、复制流量(TCPCopy)、模拟流量(自建压测平台+DDoS工具)、流量泄洪("堵上几十万的量,在某一天突然打开")的具体操作方式,直接支撑本卡片结论。 - 原始内容:在大促期间,线上服务扛的比较大……我们可缩减服务器,然后观察线上服务以得到能承受大促压力的服务器临界值……主要通过TCPCopy复制端口流量,多层翻倍放大流量……我们把订单"堵"在一个结构中,不往下放……在某一天突然打开,就会看到一个峰值。