蝙蝠岛资源网 Design By www.hbtsch.com

概述

之前处理过一个购物车故障,觉得还挺经典的,在这里跟大家分享一下。这个故障直接导致前端添加购物车、获取用户购物车列表等操作都失败了。购物车是入口,一旦出现问题,影响极其严重。

临时处理

购物车服务所有接口,是有打印响应时间的,发现比平时慢了很多。由于情况已是十万火急了,我只能先重启购物车,缓冲一下,然后利用这段缓冲时间,赶紧定位问题。

问题定位

之前对购物车应用基于Spring Cloud微服务化了,已经稳定运行了几个月了,且当时上线前也经过压测,接口性能是没问题的。怎么突然之间就有问题了呢?根据以往的经验,大部分故障都是SQL语句引起的,因此首先导出数据库的所有慢SQL(腾讯云有导出慢SQL的工具)语句,发现大部分慢查询都是来自库存查询的SQL语句,有些甚至是10秒钟才执行完。

后来仔细一看,库存慢查询语句,要查询库存的商品比平时多很多。商品个数少的话,这条语句还是非常快的,一旦多了就开始慢了。

解决方案

由于库存计算体系的历史原因,这条SQL是很难优化的。情况又是十万火急的,大老板一直在问咋回事。因此临时改代码,将商品库存放到Redis缓存起来。购物车服务的话,是允许库存数据不实时的,因为后面的结算和支付会实时计算库存,库存不足的时候,会提示用户的。

注意:

  • 由于购物车是入口,流量很大,而从购物车到结算页再到支付,由于有一个操作步骤,因此结算页和支付页的流量是没有购物车那么大的;
  • 部分用户购物车上的商品数据是非常多的,但是未必都会买,用户也可以勾选要买的商品,然后下单;
  • 部分用户没有清理购物车失效商品的习惯,导致购物车上的商品非常多。

终极解决方案

将库存服务独立出去,将商品库存数据放置到缓存,并引入实时刷新缓存中库存数据的机制,让缓存中的数据尽量保证新鲜。这样的话,查询库存的时候,大部分都可以从缓存中获取,不会穿透到数据库上。

补充

我们对接口进行压测的时候,部分场景下,要考虑入参的个数,不能简单的用几个数据压测,觉得性能OK就不管了。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接

标签:
sql查询慢导致服务无法使用,sql查询慢导致服务无法使用的解决方案

蝙蝠岛资源网 Design By www.hbtsch.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
蝙蝠岛资源网 Design By www.hbtsch.com

评论“一条慢SQL导致购物车服务无法使用的解决方案”

暂无一条慢SQL导致购物车服务无法使用的解决方案的评论...

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。