MySQL CPU占用过高的排查方法

MySQL CPU过高的常见原因有以下几点

  • 业务连接过多,并发太高

  • 系统环境配置不合理

  • SQL语句效率低、不合理

  • 硬件问题

鉴于以上几点常见问题,我们可以通过合适的手段来进行排查,来确认故障原因
1.先从系统层面进行排查
可以使用top命令来查看mysq的进程来确认mysql是都CPU占用过高
通过top命令可以查看到CPU使用率高的mysql进程的PID,然后可以通过PID来查看具体的线程情况,命令是

top -H -p <PID>

微信截图_20220322102133.png通过此命令可以查看到CPU使用异常的线程
也可以通过pidstat命令来查看

pidstat -t -p <PID> 1 5

微信截图_20220322102309.png也可以直接通过proc下命令的status文件查看具体线程情况

cat /proc/<PID>/status | grep  Threads

通过free命令来查看系统的内存使用情况
2.从mysql中进行排查
可以使用show full processlist;命令查看当前连接是否有异常
也可以使用以下命令

select * from information_schema.processlist;

参数说明:

id:标识位,MySQL 进程 ID,使用 kill id,可以杀掉某一个进程
user:当前连接的用户
host:当前连接的主机
db:连接的数据库
command:执行的数据库操作类型
sleep:休眠状态
Query:查询状态
connect:连接状态
time:已经执行的时间,单位秒
info:已经执行的 SQL
state:SQL 执行的状态,结果是 SQL 语句整个执行状态中的一个,其中包含很多状态

除了以上排除方法,我们还可以看看我之前的笔记,例如打开mysql日志,慢查询等方法进行排查,然后根据sql语句排除故障

3.从系统层面排查硬件故障

主要可以使用lspci和dmesg命令查看硬件是否有问题

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/820.html

我要评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。