mysql恩阳执行脚本_王新栋 | 2017京东商城-京麦平台618备战实践

0818b9ca8b590ca3270a3433284dd417.png

首先确定自己的备战思路,梳理核心流程、找出薄弱点,对薄弱点具体优化。

同时协调压测对优化结果验证,优化和压测会有一个反复的过程,后面我们还要实际演练,比如降级开关,防止实际情况发生的时候准备好的功能不可用。

最后我们要做一轮培训,在工具使用,快速定位问题,历来的教训总结都过一遍,从心理层面上我们也要辅导,大促期间发生的问题都不是小问题,研发人员在这种压力下处理问题有时候会变形,我们会在这方面做一次心理疏解。这中间我们可以利用几个规则,二八法则,找出20%重要核心的功能,比如京麦的登录、交易、价格门消息推送。在找薄弱点的时候我们可以试试康威定律的几点规则,“可能出错的事总会出错”,“如果你担心某种情况发生,那么他就有可能发生”,我们还会找大家一起列出你心中最不可能出现问题的系统和功能点,那么列出来重点对待,没错,是重点对待。

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

SQL优化:

每次大促前我们都要将系统中性能慢的sql抓出来,而且这种工作投入产出比极高,也就是可以花费较小代价带来极大的性能收益。sql性能问题,大多数情况下是没有索引引起的,这可能是后续业务变化迅速,上线前代码review的遗漏,需要这个时候统一过一遍。还有就是索引使用错误,比如索引字段是字符串类型,但是程序中请求DB的时候传的是long类型,索引失效,表中数量过多,做了一次全表扫描,性能会很差。还有时候我们添加索引的时候要看区分度,计算索引区分度的方法,不重复的索引值/总记录数,值越接近1,说明区分度越高,查询的时候mysql就会过滤掉更多的行数据。还有,添加索引最好结合mysql执行计划来判断。有时候做了过多的join操作,比如超过3张表以上,我们就要想着去拆解这些sql语句。在就是数据库层面我可以把历史数据转出减少数据量来达到提高查询速度的目的。

0818b9ca8b590ca3270a3433284dd417.png

降级限流:

这种技术实际上是保命的措施。降级一般有屛蔽降级和容错降级两种,对一些非核心的功能,比如京麦的麦圈,服务号,论坛等功能,而他们恰恰又请求着mysql,redis等公共资源,为了减少这种竞争我们就会对这些功能进行屛蔽降级,直接切断RPC调用,不再发起远程调用,返回空或者其它异常提示,减少公共资源的访问。降级开关,目前京麦是采用统一配置中心来使用。同样,限流技术在京麦平台中也是异常重要的一个措施,尤其是对京麦网关的调用。我们目前是采用令牌桶的方法,实现方式是Guava RateLimter,简单有效,再结合统一配置中心,我们可以动态调整限流阈值。不用重启服务器即可实现快速限流策略调整。我们在网关里面还有一个设置,就是并发度,这个是方法粒度的,对每一个调用第三方的接口都有一个并发度数值设置,而且是动态设置,也是通过zookeeper下发到每一个服务节点上。并发度的具体实现是通过jdk的Semaphore。

0818b9ca8b590ca3270a3433284dd417.png

性能压测这一块,可以很好的检验我们优化的结果,压测的过程中我们关注qps的同时,还要结合服务器的cpu、io、内存等机器性能指标来定位我们的性能瓶颈。最后来预估我们系统的承载能力,提供数据支撑来申请服务器或者docker资源。压测工具研发可以自己写脚本,借助jmeter、loadrunner等工具,也可以有计划的联系性能压测组他们协助执行。最困难的还是产生真实的压力。

0818b9ca8b590ca3270a3433284dd417.png

扩展阅读

0818b9ca8b590ca3270a3433284dd417.png

点击阅读原文直达王新栋简书地址

文章知识点与官方知识档案匹配,可进一步学习相关知识MySQL入门技能树首页概览31787 人正在系统学习中 相关资源:Veneer:文件屏蔽软件-开源-其它代码类资源-CSDN文库

来源:老杨聊汽车设计

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月16日
下一篇 2021年1月16日

相关推荐