作为一名经验丰富的开发者,你需要教导一位刚入行的小白如何解决"mysqld CPU 占用率过高"的问题。下面是整件事情的流程及每一步需要做的事情:
流程
步骤 | 描述 |
---|---|
1 | 检查当前 mysqld 占用率 |
2 | 分析 mysqld 占用率过高的原因 |
3 | 优化配置或查询语句 |
4 | 监控效果并持续优化 |
步骤说明
一、查看CPU占用情况
top
- 1、终端内输入 top 指令,可以查看服务器负载情况。(下图是问题解决之后截图的,对页面疯狂刷新后,mysqld占用CPU也不是很高,排查前是近乎100%的)
二、查看mysql正在执行的语句
2.1 登录mysql
终端内输入下面指令,<用户名>
替换成数据库链接用户名,如 mysql -u root -p
mysql -u <用户名> -p
1.之后按提示输入密码。
2.2 查看进程列表
show full processlist;
我这里出现问题的SQL语句就是 SELECT * FROM `mac_vod` WHERE `vod_status` = 1 AND (`vod_actor` LIKE '%林在培%') ORDER BY `vod_time` DESC LIMIT 0,10 这是频繁查询引起的,估计是被采集了,剩下的就看我们怎么处理了,如果查询语句还能优化,就优化下,如果不能优化可以限制IP或者其他操作,避免影响其他站点的正常访问。