mysql服务器CPU利用率过高排查过程
更新时间:2025年12月15日 08:35:53 作者:运维开发那些事
文章介绍了通过监控平台发现MySQL服务器CPU利用率过高的问题,通过排查和分析,找到一条执行时间过长的SQL语句,并通过EXPLAIN分析和优化该SQL,最终解决了CPU利用率过高的问题
背景
监控平台告警mysql服务器CPU利用率过高。
当时第一反应是平时的CPU利用率一直都在50%以下,怎么会突然过高呢?怀疑是有某些sql语句导致的。
排查过程
1、通过ps命令查找mysql进程ID
ps aux |grep mysqld
假设找到的pid为1796
2、使用top查找高CPU利用率的线程ID
top -Hp 1796
记录高CPU利用率的线程ID,例如:12345
3、找到线程对应的sql语句
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE ID = (SELECT THREAD_ID FROM performance_schema.threads a WHERE THREAD_OS_ID = 12345);
看到有一条长sql执行了2min还没结束。
结论:是这条sql导致的CPU利用率过高
4、sql优化
通过EXPLAIN去分析查询sql
- 减少查询行数
- 使用索引查询
总结
通过利用率过高的mysql线程id找到 对应的执行sql ,然后通过EXPLAIN去优化查询语句。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
MySQL Lock wait timeout exceeded错误
“Lock wait timeout exceeded” 是一个常见的MySQL错误,指示了潜在的性能问题或死锁,本文就来介绍一下如何解决,感兴趣的可以了解一下2024-05-05
MySQL统计今日生成create_time的数据量的方法小结
create_time通常是一个用于表示某个实体或事件创建时间的字段,在数据库设计、日志记录或许多软件系统中常见,它存储的是一个日期或时间戳,记录了数据首次被创建的具体时刻,本文介绍了MySQL统计今日生成create_time的数据量的方法,需要的朋友可以参考下2024-08-08


最新评论