找回密码
 会员注册
查看: 36|回复: 0

转转-多业务常态化压测之1+23

[复制链接]

2万

主题

0

回帖

6万

积分

超级版主

积分
63703
发表于 2024-9-20 05:09:49 | 显示全部楼层 |阅读模式
背景1、基于电商的业务背景,每次大小促活动,都要做例行的压测巡检,包含全链路压测等手段,确保系统稳定性2、随着公司业务的发展,业务项目也是在日益增多,很多存量/增量项目在上线后都未做过摸底压测,对系统稳定性缺少了解,存在一定隐患的风险,在这背景下,团队安排了定期双月例行压测3、新项目上线后,需要安排压测任务,针对系统稳定性进行验证……综合业务需求,会存在多样化的场景,但是涉及压测,每次都要重视,且要达到投入成本要低,执行效率上还要得到保证。接下来本文重点介绍转转-多业务形态下,是如何选择压测方案进行常态化压测的!压测前的准备流程1、人员投入投入专门QA的人去做压测各业务组灵活安排QA人员参与2、介入时间大促压测,提前半个月到20天开始介入常态化压测,随时可以开始3、执行效率无人值守压测(定时执行压测)无人值守与现场压测结合,释放大部分人力4、测试结果自动生成测试报告服务触发异常自动推送通知到相关负责人压测的前置动作1、压测专用的用户基于压测的特殊性,系统内部构造一批专门用来压测的user数据,再结合压测平台,把这批用户数据作为基础数据,应用到每个压测场景当中,减少每次压测都要生成一批用户数据或从生产拉一批真实用户数据。2、测试数据的准备测试数据,这里指的业务场景下所需要的数据,作为参数化数据(压测请求传参所用),包含商品id,属性id,优惠券等等;可以通过工具批量拉取,让参与压测的QA提高造数据效率3、服务调用量申请参考压测计划的预期值,以及往期压测的流量情况,在压测开始前,在服务治理平台对服务申请调用量,以免压测过程触发限流。4、业务配置项检查由于是在生产环境压测的特殊性,在压测前需要对各服务的进行检查确认,避免影响生产环境真实的业务。选择合适的压测方案选择压测方案前,我们先来看一个案例正常上班时间,投入在压测的准备阶段的时长:准备压测账号,耗时1小时左右(压测平台不支持生成账号的条件下)梳理压测服务和接口,耗时2-3小时左右准备压测数据,耗时1小时左右准备压测场景和调试压测脚本,耗时1-2小时总共耗时预计在5-7小时不等公司所有业务安排压测时间都是在0点之后才开始,业务正常安排一次压测,需要投入:RD:至少1人QA:至少1人 压测时长:2-4小时不等第二天上午因人员需要休息,而不能及时到公司上班压测结束之后,梳理压测结果,收集业务日志,以及监控截图和问题记录,大概花费2-3小时从以上统计结果来看,安排一次压测任务,至少投入RD1人,QA1人,准备阶段花费5-7小时,压测阶段耗时2-4小时不等,梳理压测结果2-3小时,加上第二天上午半天时间,从人力、物力耗费成本是比较多的方案1:现场压测以往的压测方案,都是安排相关参与压测的同学,凌晨留守在公司现场支持,也就是跟上述案例一样的方式,通常现场压测时,都很多个压测场景一起压测,整体投入的时间也会相对比较长。但有个非常重要的前提,因为压测环境是生产环境,所以每次压测安排在0点之后,真实的业务场景基本上到那个时候的访问量在很大程度上已经下降下来了,遇到大促活动期间,可能会延长到1-2点之后都有是可能的,为了不影响真实的业务流量,故压测时间要安排得更晚一些优点:1、现场压测结果实时查看,有问题随时可以停止;2、查看异常问题,随时查看日志,并做记录;3、压测服务负责的RD现场排查问题,能快速解决或给解决方案4、压测过程可随时调整并发线程大小,更准确得出服务瓶颈点缺点:1、投入人力、物力成本高,甚至有可能第二天上午不能及时上班2、压测过程出现依赖服务异常问题,半夜还需要打电话吵醒其他负责人,排查也不能立马解决。。。3、压测过程投入太重,无法做到随时随时安排压测任务4、有可能存在项目压测间距太长的问题,例如2-3个月才有一次压测方案2:定时压测(无人值守)准备流程跟现场压测差不多,压测的前置条件是少不了的,准备压测数据,压测场景,以及调试压测脚本,区别的点是,定时压测是无人值守压测,调试好的脚本,设置在凌晨固定的时间自动进行压测,第二天上午上班就可以收集压测结果,并输出压测报告,还有另外的优势是,前置条件准备一次,基本可以支持多次压测,也不用每次都要造压测数据,而且定时压测频次也可以每天凌晨安排进行压测,压测场景也不用太过于集中在一起,同样可以减化梳理服务接口和压测场景的成本采用定时压测的方式,在很大程度上,释放了更多的人力、物力,可以更灵活的安排相关其他事情,不用长时间跟着压测执行优点:1、无需安排相关人员现场值守压测,节约了压测执行时的人力和物力2、安排压测任务比较灵活,日常项目压测,摸底压测,随时能安排3、安排定时压测的场景少,压测频率快缺点:1、一些特殊场景是定时压测无法做到,例如需要在压测的时候更改配置、降级等2、设置并发线程大小比较固定,没法做到自动调整;无法根据压测结果判断得出准确的服务瓶颈点方案3:现场压测+定时压测通过方案1和方案2在业务侧投入的实践情况作对比分析,其中的优缺点也是各异,但想更灵活安排压测,又想更节约人力成本,更想要压测结果不出偏差,最终得出结论是把现场压测和定时压测两者相结合,但是这样有个前提条件,需要在前置准备阶段就要把压测场景做好区分,为什么要这样做?首先,明确现场压测和定时压测的目标是为了解决什么问题,最后得出什么结果。在这个条件下,很快就能区分开来了【现场压测场景】1、新增项目,通常是有业务指标,但也可能存在一些业务项目需要压测,又没有业务指标的,想要确保项目压测结果符合实际结果,整个过程是需要人工进行多次验证,才能得最终压测结果2、重构项目,这类项目压测,通常是需要做前后压测对比,而且需要分析和对比服务、机器等等多种差异条件,最终得出合理的结果3、验证服务瓶颈的项目,是要把服务压测到极限,或者获取最高TPS/QPS峰值,这种情况下,是需要进行多次调整并发线程,接口参数,服务配置,机器配置等等4、特殊业务场景:例如秒杀,下单,领卷等等,还有些场景需要设置服务配置,如降级,调用量,扩容等,像这类压测场景,就需要现场人为检查和验证,确保数据和配置的正确性【定时压测场景】1、业务验证稳定性,通常只需要验证服务业务响应正常,数据正常即可,设置一定频次进行压测,检查无异常即可,无需投入太多人力去验证2、业务日常巡检,无需设置太高并发压测,不需要投入太多精力去关注,只需确保业务响应正常3、旧服务接口回归,保持跟历史压测条件进行压测即可4、项目摸底压测,设置压测脚本,调试正常后设置定时压测即可,最终得结果分析再确定实际压测方案5、批量重复性操作的接口,设置特定的参数,采用定时压测方式最合适,省时省力6、项目上线后,设置定时压测,快速回归验证服务稳定性……当然能挑选作为压测的场景并不止这些,适合当前压测任务,又能让自己提高效率和质量,得出最准确的结果才是最重要的其次,实际业务安排,优先是保障业务功能的正确性,再去安排功能以外的自动化或者压测任务,通常是不会投入太多人力的,优先考虑最节省人力的方式,定时压测的是最优选择最后,电商背景下的大促活动,每次都要做压测,以往都是要安排现场压测,投入成本实在是太多,那要选择更效率的方式,又要满足这种条件,那就把压测压测场景分开,常规巡检压测和摸底压测都采用定时压测,特殊场景再采用现场压测,既能达到大促压测的条件,又能满足预期的结果方案4:独立的压测环境采用独立压测环境的方案,选择弃用,为什么呢?请看以下分析:1、压测结果不够准确一般来说,保证执行性能压测的环境和生产环境调试一致是执行一次效性能压测的首要准则。有时候,即使是压测环境和生产有很细微的差别,都有可能导致整个压测活动评测出来的结果不够准确2、系统架构搭建困难1)系统逻辑架构从端到端的调用,服务相互依赖调用,各种中间件数据流转,部署整套环境都需要考虑真实业务的流向,会涉及到多个业务系统,单靠一两个人,实现成本太高,难度也很大2)物理架构线下机房,供电系统,内外网访问,云环境等等,需要部署一整套运行系统,需要运维同学提前搭建,是否有多余的机器来投入做压测环境,都是需要申请,甚至可能没有机器可申请3、投入大,产出小为什么是投入大,产出小?在这里大家可以想想,压测周期通常是多久,最多1-2周,日常情况下是几个小时就完事了,这样投入大成本去搭建一套环境,只是用了这次的压测,然后就结束了,只是为了得到一个压测结果,对于业务来说,如果不做这次压测的投入,是不是系统就一定有问题了?对业务成本来说,这是不可行的方式;同样从机器成本上看,每台机器的成本都要花钱的,做压测都是要花钱的,最终压测完只是得到一个结果,而不是换成对应成本,所以,在机器不富余的情况下,这个方案是不作考虑的最终的实践效果通过上述的方案实践和探索,决定放弃方案4,因为投入成本实在太高了。以前只有现场压测的方式,现在多了另外两种选择,根据实际业务需要,又要做到常态化压测的条件,不同的条件,选择不同的压测方式,既能满足业务需求,又能符合团队需要,以下看看这次618压测实际的效果:压测后的总结1、要达到每天都能安排压测,前提是已经具备各个完善的平台系统做支撑,出现异常自动化熔断处理,超时自动化抛空处理,宕机自动容错恢复等等措施手段2、参与压测人员需要具备一定的性能分析能力,针对压测结果可以给出合理的优化建议3、提高效率的前提,是经历过无数个坑,在填平之后,重新规划走出的新捷径,既能满足且又能减少在以往操作方式上的投入,又能提高现在操作方式产出,还能释放更多的时间和精力4、全链路压测,作为一种大促前必须巡检的手段,但它不是必要的前提,在项目平时做的常态化压测才是有效保障系统长期稳定性的重要手段下一步计划1、结合公司内部流量路由的方式,实现生产数据与压测数据区分,做到正常上班时间也能随时做压测2、测试结果自动聚合,包含接口压测结果,服务调用链路分析,服务整体流量,服务异常情况,耗时等等
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-25 13:55 , Processed in 0.309412 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表