吉祥航空|周年庆营销活动业务保障实践【航空案例】

客户介绍

吉祥航空是国内知名的航空公司之一,2021年运输旅客超1,400万人次,总运输旅客超1.3亿人次。
吉祥航空|周年庆营销活动业务保障实践【航空案例】

建设背景

近期吉祥航空“925周年庆”活动,集团推出了旅客喜爱的一系列营销产品,比如“主题卡”、特价机票秒杀等,预估活动页面流量将迎来数倍增长。性能测试团队为解决容量评估、性能摸底的问题,引入了数列科技全链路压测平台Takin来解决当前的稳定性痛点。

场景挑战及解决方案

挑战一:秒杀下单场景下,单条数据库存更新耗时太久如何解决?

现有A商品库存500件,在秒杀场景下,为了不出现超卖的情况,在SQL中加了库存判断,这样库存可以保证不出现超卖情况,但是SQL的执行性时间变长了,单次更新时间接近3s。
解决方案:主要考虑在保证不超卖的前提下,利用提升接口效率。由于临近活动开始,可选择代码量改动较小的方案——把库存缓存在Redis中,利用redis原子操作的特性,把库存扣减操作放在redis中而不修改数据库,把修改数据库的行为放在支付成功后。
应用效果:高并发压测下,3000库存可以在1分钟内正常扣除,每秒至少可以正常完成50笔下单操作,并且未出现超卖现象。

挑战二:测试环境有限的资源下,如何将接口从响应时间13s优化200ms以内?

会员购买优惠券后,会有优惠券列表查询接口,此接口返回所有优惠券信息以及优惠券的部分详情内容,实测用户在有14张券的情况下,该接口单次请求耗时超过10s。
解决方案:利用Takin的探针定位功能,对系统做定位分析后发现主要问题为两点——数据库索引未生效或未添加、代码中循环多次执行同一个sql。在代码中进行数据预处理,只执行1次数据库操作,在命中索引前提下,使用in替代多次数据库查询来解决。
应用效果:用户下单后查询订单详情操作从单次请求耗时10s以上降低到200ms以内,性能50倍以上,极大程度上提升了在秒杀场景下的用户体验。

挑战三:代码发布到线上环境,如何保证活动开始无故障?

登录接口的实际容量、优惠券的购买,测试环境功能、性能问题解决之后,发布生产,进行生产压测,压测过程中频繁出现RT超过60s情况。
解决方案:利用Takin的探针定位功能,对系统做定位分析后发现,代码中mongoDB保存相关信息超时,导致所有线程卡在mongoDB请求中;同时,新扩容的机器访问第三方接口防火墙未开,导致所有请求卡在等待网络响应上。后问题被逐一解决。
应用效果:提前演练规避掉了以上2个生产故障,保障了活动当天可以稳定运行。

客户收益

此次“925周年庆营销活动”稳定性保障,吉祥航空基于Takin的全链路压测能力,在测试环境、生产环境,提前发现、累计定位了30+个性能问题,包括代码层、sql层、基础配置、网络等相关问题。经过优化后,性能有了很大提升,提前排除了隐患风险。同时925活动也已经顺利经过了吉祥航空APP用户检验,线上0性能故障
如果你对该案例感兴趣,欢迎扫描下方二维码
立即咨询和体验
二维火| 点餐小程序用餐高峰保障实践【餐饮案例】

本文来自投稿,不代表TakinTalks稳定性技术交流平台立场,如若转载,请联系原作者。

(0)
上一篇 2023年1月3日 下午2:55
下一篇 2023年1月3日 下午3:58

相关推荐

发表评论

登录后才能评论