年某日,中午。
午饭时间,运营部的同事跑过来说,生产环境挂了。一听,这还了得,生产环境挂了,老板知道后还不大发雷霆。果断放下打热了的午饭,登录生产环境的系统,查看日志。这一看,乖乖隆咚锵,报了一堆Mysql数据库连接超时的日志。
进入阿里云控制台,果然RDS数据库CPU使用率居高不下。这时脑海中的首先出现的想法就是万能大法——重启Mysql。但是这样做的话就会再重启数据库的过程中丢失很多的数据。运行了那么久的数据库,重启时间很长怎么办。
于是,打开百度进行一波搜索。依据百度给出的方案:
输入showprocesslist;查看所有运行的线程,找到所用用户运行的线程
使用kill命令结束Command值为Query的线程Id。
结束掉一大批线程后,果然RDS服务器的CPU使用率开始下降,一段时间后恢复正常。一次线上的Mysql数据库生产事故就这样解决了。
虽然事情解决了,但还是得需要了解产生这次事故的具体原因。只有这样才能弄清楚来龙去脉,才能在工作中学到知识,才能总结出自己的工作经验。
经过一番日志的查看,发现是关于订单表的SQL语句出现慢SQL行为。
总结:
在程序员生涯中,遇见事情不要慌。
首先自己分析分析,看能不能自己找到问题的原因。如果自己不能解决,可以问一下身边的同事有没有遇见同样的问题。如果上述都不能解决问题,那就在网上去搜索解决方案。