由慢SQL引起的一次生产事故

故障解决经过

        公司圣诞活动几乎在活动开始的一瞬间服务器迅速宕机。其实用户量是在预料之内的,按理说承载这些用户应该没有问题。在宕机期间服务器连接池一直在报错,大概的意思是“HikariCP连接池超过30000毫秒连接失败”。当时就没分析明白,连接池配置一顿改,数据库配置一顿增,带宽也加了。然而并没什么卵用!

        最后终于有人查了慢SQL日志,发现有几个新功能的慢SQL执行时间最高达到了16秒。其实当时并没预料到几句慢SQL会有这么大影响,之后找程序员紧急优化了SQL。就这样一下救活了整台服务器,罪魁祸首就是慢SQL。

经验教训

        其实在运维阶段往往不会优先考虑程序问题,而且觉得程序已经测试过并且都好使了。但是有两点导致了慢SQL问题测试阶段容易遗漏。第一,功能测试阶段即使慢也不会宕机所以看不出来。第二,压力测试阶段一般会找比较典型的几个接口进行压测,往往不会所有接口都测,没测到的接口慢SQL就容易遗漏。

        所以程序员提高自身素质,对于SQL的优化和执行效率问题一定要重视起来。能完成工作的程序员和能完成工作的程序员区别就在此了。

猜你喜欢

转载自my.oschina.net/u/3452433/blog/1609126