前些日子,大批美国网友 “涌入” 小红书,小红书几乎一瞬间就登顶了美区 App Store 免费榜。互联网面向用户的业务流量往往无法提前准确判断,总会面临突发流量,造成服务承受平时数倍的压力,无法及时处理请求。过载保护的目标是服务过载情况下,仍能尽其所能对外服务,不至于系统瘫痪,从而保障用户体验和服务质量。
今天,我们就以社交平台核心的视频点播业务场景为例,为大家分享如何使用压力测试工具,对服务中过载保护方案针对性地进行测试,从而实现方案的选型和日常服务的性能优化测试。希望借此帮助近期类似需求的同学,随时随地发起测试,节省大家的时间!
视频点播过载保护的业务特点
视频点播采用微服务架构,在微服务中由于服务间相互依赖很容易出现连锁故障导致雪崩。因此,我们在选择过载保护方案时需要考虑到组合过载问题,除了满足点对点的保护能力外,还能应对微服务链式场景和服务多扇出场景下的过载保护。
压测方案设计
这里我们测试的是腾讯开源tRPC框架下的插件和客户司内方案的对比(大家可以结合自身的业务情况初步方案调研,然后参考以下设计思路进行测试)。
测试对象:
- 单个服务过载测试
- 组合过载测试 (仅开server端)
- 压测时间统一分为3分钟和10分钟
覆盖的要点:
- 服务原性能:没有接入插件时,服务过载成功率
- 接入插件:在没有过载情况下,对服务性能影响;服务过载,成功率
- 服务过载配置:1.5倍/3倍/5倍等,极限下看服务成功率到0
实施步骤和提效技巧 ( 这里使用的是优测压力测试工具)
STEP 1:测试数据准备与协议同步
在实施压测之前,需要准备相关测试数据模拟用户场景,包括测试账号等形成csv文件。同时平台提供便捷的协议文件管理,省去反复手动上传协议文件的烦恼。
STEP 2:测试场景构造与任务配置
创建的测试场景可自动关联协议文件,并支持参数化配置,添加业务断言非常方便,同时测试场景不仅可用于压力测试,也可复用于接口测试、接口监控等,极大提高测试效率。
a. 测试场景:自动生成的场景用例,可在全局变量中找到数据文件,包含流量数据的详细请求信息,同时通过出参定义和请求结果断言快速添加自定义断言。
b. 压测任务:基于同一测试场景,配置不同的测试任务,主要在QPS的配置上,节点请求(向哪个容器节点/集群发起请求)等定制化部分做修改即可。
c. 手动调压:为提高压测效率,我们选择了手动调压模式,即在压测过程中可以根据服务性能数据随时调整阈值,即刻生效。
STEP 3:报告分析对比与持久化存储
优测后台一体化工具提供非常友好的可视化报告。压测任务完成后,可以方便地看到该场景下的所有历史报表和数据;报告对比功能,可以同时查看多次压测结果数据,能够方便直观地进行各种方案的数据分析和对比;与其他平台相比,后台一体化最大优势是将报告结果数据持久化存储,为下次压测做为参考。
本次测试场景下,通过固定QPS压测对比成功率和耗时,我们测试出各个方案的稳定性;通过不断变化QPS压测,我们可以测试每个方案的最大化服务性能,哪个可以更及时探测到过载并启动保护,当过载结束,服务也能比较快恢复。
以上是本次的分享,希望能够对大家有所帮助!
本文未注明其它来源的内容,其版权优测云服务平台所有,未经原作者允许不得转载本文内容。