群众吃一个瓜,可能就有一堆DBA要掉头发

腾讯云数据库

共 3582字,需浏览 8分钟

 ·

2021-01-30 13:57

前阵的微博热搜,各种大瓜接踵而来,数据君就像一个瓜田里的猹

最魔幻的当数22号,前有弃养上热门,后来北京网易员工核酸检测阳性又上热搜,全员下班,隔壁的新浪员工们不仅瑟瑟发抖,还得为新热搜一阵忙活,傍晚在弃养、网易和众多热搜夹缝中,又杀出一个隐婚生子宣告新浪员工的提前下班梦正式破灭。

不只是吃瓜,电商促销、产品发布、游戏公测,各种狂欢的背后,可能后面都有一堆DBA要掉头发
(比如这样……)

而对于所有人,这时候的每一分钟,都至关重要。

下面这个,是腾讯云数据库DBA团队帮助从告警到解决仅用20分钟,一小时内帮助业务性能百倍提升,完美度过活动高峰的故事。它也让大家看到,在狂欢背后,那些熠熠发光的人们。

1


业务告急



某个下午,刚吃完午饭的腾讯云数据库DBA郝志刚准备午休小憩,一切尚平静如水。正要睡去,一阵急促的电话铃声打破了办公室的安静。

“谁啊?”郝志刚心想,工位附近还有不少同事在午休,打扰大家休息怎么办,怎么这时候来电话。

“喂——”接通电话后,郝志刚才知道,这下不光自己,同事也睡不成了。

很快,一众DBA围在一台电脑前。

原来是腾讯云数据库自动运营平台DBbrain发现,某客户实例的系统慢查询突然升高,同时机器的实例负载也突然增高。

(因数据敏感,图片仅做功能展示,非实际情况)

正值十月,客户此前正在准备自己的周年活动和即将到来的双11活动,前期已经在几乎能看见的各种线上线下渠道投放了自己的推广资源,“就连我们这些不喜欢「网上冲浪」的中年人都能看见他们的推广”,郝志刚后来回想起来自嘲道。

“发现异常后,我们第一时间联系了客户相关负责人确认情况,”郝志刚回忆道,果然,当时他们正在发起一场大规模的营销活动,但由于业务系统SQL异常导致了故障,DB性能急速下降,应用前端访问超时现象大范围出现。

(因数据敏感,图片仅做功能展示,非实际情况)


据了解,当时,前端访问的成功率大约只有30%,正常情况下,哪怕是稍微在互联网行业里叫得上名字的公司,前端访问成功率都不可能低到30%,客户上下心急如焚。

客户苦笑着说,“为了这个活动团队各个部门前后准备了很久,投入了大量的人力和推广资源,要是因为技术问题而提前结束活动,可能整个技术团队都得走人。”

郝志刚与几位DBA同学马上与客户技术团队联系,开始问题联合排查。他们一边了解客户业务的场景,一边同时联系技术研发团队,开启紧急技术专家会诊。

本来能带来上亿回报的活动直接停掉,几分钟就发了百万,这还不论铺天盖地各个应用的首页、开屏和信息流广告花了多少钱,以及访问超时这种低级错误对公司品牌价值带来的负面影响。

郝志刚怎么算都算不清楚这笔钱。

这次失败影响的不仅是客户,对于腾讯云数据库来说,不管是客户侧还是自身出了事,只要出了岔子那么外界就极有可能认定腾讯云不靠谱,就肯定会对腾讯云数据库产生影响,所以,这个问题一分钟都拖不得。

急客户所急,DBA们快速基于腾讯云数据库DBbrain智能诊断系统和自身丰富的运维实战经验开始问题排查。经过检测,他们很快定位到了导致性能下降的慢SQL,并马上给出了优化建议,进行添加索引等操作。

(因数据敏感,图片仅做功能展示,非实际情况)

“很简单嘛”、“就这?”、“以后这种事叫我小弟”、“打王者来不来”,大家都松了一口气,还开起了玩笑。

然而,诡异的是,通过定向添加索引的处理后,业务系统的性能有所好转,但系统SQL资源消耗率的问题仍未得到根本性提升。刚刚活跃的气氛又变得凝重起来。

经过分析发现,系统场景设计的不合理,以及测试模型与现网模型的不一致,导致问题隐藏得扑朔迷离。

1


兵分两路



无论如何,保障客户的业务应用是第一要务。伴随着用户的投诉、业务的焦急,十万火急之中,腾讯云DBA与数据库技术研发团队商议,决定兵分两路,一边投入资源,一边继续排查,同时为业务护航。

“首先是没有办法的办法,扩容!”腾讯云数据库团队表示,基于腾讯云上预留的专门应对各类紧急情况的服务器资源机制,腾讯云DBA开始指导客户技术团队进行水平扩容。

扩容并不麻烦,基于分布式数据库系统,以及支持一键水平扩容的特性,业务系统很快完成了一轮扩容,成功缓解业务系统当时的容量需求,同时恢复了服务,将系统访问成功率提升至99%。

至此问题似乎再次解决了,但这时候,大家都多了一个心眼,继续排查,不敢懈怠。

后来发现大家的判断是对的,扩容并不意味着彻底解决了问题。郝志刚介绍,“这犹如枪林弹雨中,在低矮的战壕上撑起一张金刚防护罩。然而,活动不能就这么拖延下去直到结束,业务访问仍需要优化服务,‘流量’进攻仍在继续。”

系统当时面临的更大挑战,流量峰值到来,业务前期筹备的运营推广资源,正蓄势待发。而在更大的流量峰值下,现在的情况,谁都不敢保证能安稳度过

那为何不继续扩容呢?事实上,如果不能将系统中的性能瓶颈问题真正解决,降低当前居高不下的SQL资源消耗率,那么再增加10台、100台机器扩容,也只是空耗。

大战在即,正在扩容DBA绝望之际,兵分两路的另一边正关注研究的方案,并且逐渐有了眉目。

在扩容期间,腾讯云DBA、研发团队同时对慢SQL进行深入分析,寻找问题根源。借助DBbrain系统,性能问题的焦点最终锁定在一条针执行时间比较久且查询量很大的慢查询SQL上,后来发现,正是该SQL消耗率系统大量的资源。

(因数据敏感,图片仅做功能展示,非实际情况)

针对该SQL的where条件中字段数据特征进行统计和分析。借助技术人员多年丰富的多场景运维实践经验,腾讯云数据库团队发现了一个隐藏极深的字段,简单来说,该字段标识一个订单状态,只有几个不同值,区分度不高,通常情况下并不适合加索引。但是慢查询SQL的中针对该字段的条件,只会检索一个出现频率很低的值,DBA通过在备机验证发现针对该字段再加上一个时间字段创建一个组合索引能够大幅降低慢SQL的扫描行数,系统资源的消耗。

元凶找到了!

发现异常字段后,腾讯云数据库团队一边聚精会神盯着监控屏幕,一边动手对异常字段进行优化。

1


性能效率百倍提升



通过对该异常字段添加索引优化,改进业务系统逻辑,监控系统显示:客户系统的单条SQL资源消耗率开始呈指数级降低,执行效率提升超过100倍;而机器负载约从故障时的500%下降至25%;整机CPU消耗约从90%下降到5%左右的极低水平。

经过索引修改,扩容,再到最后发现根源问题,距离业务前端访问超时故障出现仅过去了20分钟。

看到系统性能提升的一幕,腾讯云数据库团队和客户团队都暂时松了一口气。不过,这时候,他们将开始迎接终极的挑战:基于前端访问恢复正常,以及对系统健康的监测评估,客户决定营销活动继续推进,运营资源开始陆续释放。

随着业务运营的持续进行,大约过了不到半小时,业务系统涌入的流量出现百倍增长——当天活动的访问峰值到了。不过,这一次,前端访问成功率一直保持在100%。这意味着,阻碍业务的访问超时问题,成功被解决。

这次惊心动魄的经历几乎是把客户的业务从悬崖边上拉了回来,除了前期因为访问超时造成的小部分损失外,在后续及流量高峰期系统都完美运行,由于各个团队的紧密配合,这次活动的效果也非常好,同时这也是业务的一个新尝试,疫情期间,每个企业生存都很不容易,很多公司都没能熬过2020年,有了这次的成功经验,客户又多了一种盈利模式,疫情后逆势增长。

1


后记



这下团队成员心里的石头终于落了地,借助腾讯云数据库的产品能力以及研发运维团队丰富的经验,客户伙伴本次“团购秒杀”营销活动虽然遇到波折,最终仍如预期一样,顺利完成线上运营。


“走走走干饭去”、“我要吃烧烤。

“待会打游戏不”、“我安琪拉贼溜。”

“客户说要请我们吃饭”、“你让他直接给钱。

处理完后,这些DBA又从手执“利器”的战士变成普通人,聊起了人间烟火——只不过,希望吃饭时候能不要再来告警电话……


其实不仅是腾讯云数据库的DBA团队,各种活动背后,都有一群DBA和各类问题斗智斗勇,有时候稍有不慎,就是天文数字的投入打水漂,在现在这个竞争白热化、外界影响因素大的时候更是实属不易,为了让你安心吃瓜、畅快游戏、疯狂剁手,所以请对身边的DBA朋友们好一点。

另外还值得一提的是,活动结束后,腾讯云数据库团队基于应急沟通期间的交流与调查,同时总结出一份前端技术优化方案,协助客户进一步提升系统稳健性与可靠性,以构建更健康的数字分布式技术应用系统。

-END-

MySQL之父,MySQL官方,三大顶会齐赞,凭什么?


疫情成本遭不住?一招降本85%,架构特性全部公开!


快上云,安心吃瓜
浏览 34
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报