用户的跨年夜,技术人的惊魂夜。
在互联网多媒体时代,图片、视频等类型的应用越来越丰富,一些特殊时刻,会有海量用户同时发布多媒体内容。以大家熟知的一个社交类应用为例,因其社交性、高并发、瞬时峰值的特点,在元旦零点前后的跨年时刻,读/写流量可达平日的 10 至 20 倍,迎来全年巅峰。
项目背景
前面提到的社交软件,其元旦和春节期间读链路和写链路分不同会数倍的流量飙升。其中,针对只读链路可以通过集群流量调度做到读链路的压测,但是写链路的压测由于测试数据构造复杂,用例编写成本高,是一个亟待解决的问题。
压测目标
在这次任务中,业务链路压测的特点是请求链路较短,只涉及两个请求,而难点则集中在以下方面:
●协议多,包含 HTTP、RPC 以及其他私有协议;
●业务是多地分布的,需支持分布式、多地域压测流量定制;
●模拟跨年零点,流量大、时间集中,需快速模拟大规模用户进行写操作;
●需支持请求上下文参数动态串联,模拟用户登录后,以登录态进行后续操作;
●需支持自定义数据处理,在脚本逻辑里对测试数据数据进行清洗;
●除了文字内容,还需模拟图片内容的发表,并保证带图发压也能瞬时达峰;
●需能设置检查点,根据接口返回值,按照业务逻辑检查接口调用成功与否;
●元旦保障时间紧任务重,压测工具需能开箱即用、快速编排场景、易于分析结果。
压测方法
为了 100% 满足上述需求和目标,具体的实施方法如下:
1.选择创建模式,本次压测采用脚本模式;
2.上传包含相关测试数据的 csv 文件,并设置切分文件由不同施压机并行读取;
3.上传所依赖的协议文件;
4.上传被测接口所需的图片文件;
5.施压配置并发、多地域流量定制、梯度发压;
6.参考平台提供的脚本模板,编写请求链路,并借助协议支持、数据处理等 API,完成脚本逻辑;
7.借助平台设置检查点的 API,检查接口返回值,按业务逻辑判断接口调用成功与否。
压力配置页面(演示数据):
结果分析
在 2 天内我们共进行了 8 轮次压测,逐步增加压力、增大地域覆盖。通过压测平台提供的指标数值、多维度图表、服务明细、检查点明细、日志等信息,分析系统在不同压力程度下的错误率、延时等性能表现,并结合业务自身监控指标的变化,判断业务的可用性和稳定性是否达到预期、或反映出哪些需要解决的问题。
在压测报告中,我们重点关注的指标如下:
●VU:虚拟用户数,用来模拟真实场景中同时执行操作的用户数量,也叫 “并发用户数”
●RPS:每秒请求数,反映系统处理能力,越大越好
●响应时间:从客户端发送请求到客户端接到服务器返回的时间
●失败率:一批请求中结果出错的请求所占比例,以校验响应结果是否符合期望
压测报告界面(演示数据):
工具选择
在工具侧的选择上使用的是腾讯旗下的一款工具—优测压力测试平台,以同时满足的多地域、百万并发、多协议支持的要求。另外,基于项目周期的紧迫性,该工具 SaaS 化和开箱即用的模式也很好地满足了时间和成本的需求。