记一次MySQL数据库CPU 100%应对

雪域幽狐 2018-06-04 15:05 阅读:6294


某日,突然接到短信报警,用户登录系统异常(没接到数据库报警)。以为是用户系统挂了,切换服务器后,问题依然存在,查看中间件CPU都正常,业务系统也能正常使用,就是慢。未登录用户就登录不进去。怀疑是数据库出问题,查看数据库CPU,果然100%了。
    使用show processlist查看,有很多在执行的SQL,查看info不为NULL的列,查看对应的TIME,执行了很长时间,根据SQL定位到系统,发现在接收取消关注更新数据时,where没有建立索引。平常取消关注的人少,不集中,该问题未暴露。在我们托管了某公众号时,某公众号推送了一篇文章,造成大量掉粉,更新时造成问题。
可以使用select * from information_schema.`PROCESSLIST` where Info is NOT NULL来过滤

show processlist各列含义
Id 一个标识,kill 时可使用
User 显示单前用户
Host 显示这个语句是从哪个IP的哪个端口上发出的
db 显示目前连接的是哪个数据库
Command 显示当前连接的执行的命令,一般就是休眠( sleep ),查询( query ),连接( connect )
Time 这个状态持续的时间,单位是秒
State 显示使用当前连接的SQL语句的状态
Info 显示这个SQL语句,可能显示不全

0条评论

登陆后可评论