某日,突然接到短信报警,用户登录系统异常(没接到数据库报警)。以为是用户系统挂了,切换服务器后,问题依然存在,查看中间件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语句,可能显示不全