美文网首页九零后运维小明
MySQL服务器CPU跑满100%的情况分析

MySQL服务器CPU跑满100%的情况分析

作者: 九零后运维小明 | 来源:发表于2020-12-20 22:59 被阅读0次

    一朋友服务器CPU100%,理论上来说,同时在线不会过百.数据库的连接数更不可能会2000.MySQL我给的2000的链接数,居然跑满了,而且服务器也特别的卡.看来需要入手检查了.

    1.第一步,万能的重启.当然可能重启了一会儿还是继续高上去

    2.检查连接数和慢查询语句.开始分析了.

    我们的原则是,重启能解决的,绝对不开client

    cpu100%通常情况下就是有慢sql造成的,这里的慢sql包括全表扫描,扫描数据量过大,内存排序,磁盘排序,锁争用等待等...

    一般表现现象sql执行状态为:Sending data,Copying to tmp table,Copying to tmp table on disk,Sorting result,locked

    通过show processlist查看当前正在执行的sql,当执行完show processlist后出现大量的语句,通常其状态出现Sending data,Copying to tmp table,Copying to tmp table on disk,Sorting result,Using filesort都是sql有性能问题

    可以用explain查看sql执行效率,分析索引

    解决方案整理

    1.Sending data表示:sql正在从表中查询数据,如果查询条件没有适当的索引,则会导致sql执行时间过长;

    2.Copying to tmp table on disk:出现这种状态,通常情况下是由于临时结果集太大,超过了数据库规定的临时内存大小,需要拷贝临时结果集到磁盘上,这个时候需要用户对sql进行优化;

    3.Sorting result, Using filesort:出现这种状态,表示sql正在执行排序操作,排序操作都会引起较多的cpu消耗,通常的优化方法会添加适当的索引来消除排序,或者缩小排序的结果集;

    4.出现sending data的情况:这种一般就是SQL不规范,优化SQL吧.

    5.检查网站是不是有被CC攻击之类的

    如有错误或其它问题,欢迎小伙伴留言评论、指正。如有帮助,欢迎点赞+转发分享。

    我是运维小明,微信公众号:九零后运维小明,一个爱折腾的IT技术老司机,欢迎关注我,我们一起学习,共同成长!!

    相关文章

      网友评论

        本文标题:MySQL服务器CPU跑满100%的情况分析

        本文链接:https://www.haomeiwen.com/subject/nqslnktx.html