平时好好的 RDS从今天早晨9点开始,CPU使用率急速提高,一会儿后相应的监控短信也发送来,提示CPU的使用率为 100%。
经过询问发现,9 点开始有一批用户会在涌入APP,流量最高达到了平时的 5-8 倍,所以平时的一些小问题被放大,导致了此次事故。
解决问题的过程现在看来不算难,但是发生问题的原因必须明确:不重视平时的小问题,小问题不及时解决
数据库是在阿里云的RDS
上的,控制台有个功能是日志管理-慢日志明细
,可以很清楚的如下细节:
大多数慢SQL都是因为扫描行数过多导致的,当业务刚上线,数据量不大的时候,慢SQL的问题还不突出,但是你也要发现一起处理一起,要不然就像我们一样,因为慢SQL,服务崩了。
这里插播下如果没有RDS的慢日志功能,可以通过设置MySQL达到记录慢SQL的目的。
通过可以通过
MySQL
自带的EXPLAIN
来对慢SQL
进行优化,特别注意当type
为ALL
的情况,且rows
非常大的情况。
通常处理慢SQL的办法是加索引
,但是加索引前我们需要明确下如下几点:
至于具体的优化方案:网上文章很多,我这里就不再重复了,大家自己找资料。
勿以善小而不为,勿以恶小而为之。